欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot中使用tkMapper的方法詳解

 更新時間:2022年11月10日 08:17:33   作者:luis林威  
這篇文章主要介紹了SpringBoot中使用tkMapper的方法詳解

說明:基于 MyBatis 有很多第三方功能插件,這些插件可以完成數(shù)據(jù)操作方法的封裝、數(shù)據(jù)庫逆向工程的生成等。

tkMapper 和 MyBatis-plus 都是基于 MyBatis 提供的第三方插件,功能類似,下面介紹 tkMapper 的使用。

簡介

tkMapper 就是一個 MyBatis 插件,基于 MyBatis 提供很多工具,提高開發(fā)效率,主要有以下兩個功能。

  • 提供針對單表通用的數(shù)據(jù)庫操作方法
  • 逆向工程(根據(jù)數(shù)據(jù)表自動生成實體類、Dao 接口、Mapper 映射文件)

MyBatis 基礎環(huán)境

tkMapper 的使用需要基于 MyBatis。

1.創(chuàng)建 Spring Boot 項目,選中 Lombok、Spring Web、MyBatis Framework、MySQL Driver 依賴

2.application.yml 配置文件中配置相關信息

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springdb?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: luis

mybatis:
  type-aliases-package: com.luis.beans
  mapper-locations: classpath:mappers/*Mapper.xml

注意:配置后,手動創(chuàng)建 beans 和 mappers 文件夾

3.創(chuàng)建 dao 文件夾,在啟動類上添加 dao 的包掃描器 @MapperScan(basePackages = {"com.luis.dao"})

tkMapper 環(huán)境搭建

1.添加依賴

<!-- tkMapper -->
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.1.5</version>
</dependency>

如果自己在 maven 倉庫中搜索,注意搜索關鍵詞:mapper starter

PS:添加后,注意手動刷新 pom

2.更換啟動類上 dao 包的包掃描器來源,不使用原先的 @MapperScan,要使用新添加的 tkMapper 的 @MapperScan

import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan(basePackages = {"com.luis.dao"}) //使用tkMapper的包掃描器注解
public class SpringbootTkMapperDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootTkMapperDemoApplication.class, args);
    }

}

PS:注意注解的包來源 import tk.mybatis.spring.annotation.MapperScan

3.以上,tkMapper 環(huán)境已經(jīng)搭建完成

tkMapper 對數(shù)據(jù)的通用操作

tkMapper 提供針對單表通用的數(shù)據(jù)庫操作方法。

數(shù)據(jù)準備

1. 創(chuàng)建數(shù)據(jù)庫表

DROP TABLE IF EXISTS `users`;
CREATE TABLE `users`  (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `user_pwd` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `user_realname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `user_img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;

2. 創(chuàng)建實體類

@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "users") //數(shù)據(jù)庫表名和實體類類名不一致需要指定映射關系!
public class User {

    @Id //指定主鍵
    private Integer userId;
    private String userName;
    private String userPwd;
    private String userRealname;
    private String userImg;

}

3. 創(chuàng)建 Dao 接口【重點】

注意:創(chuàng)建的 Dao 接口需要繼承 tkMapper 中提供的 Mapper 和 MySqlMapper 兩個接口,這兩個接口提供了對單表的通用操作。

public interface UserDao extends Mapper<User>, MySqlMapper<User> {
}

可選優(yōu)化策略【建議使用】:

如果不想每次創(chuàng)建 dao 接口時都繼承 tkMapper 中的兩個接口,可以自己寫一個通用的接口模板,只需要讓這個通用的接口模板繼承 tkMapper 中的兩個接口,然后自己創(chuàng)建的 dao 接口只需要繼承這個通用的接口模板即可!

但是,需要注意的是,這個通用的接口模板千萬不能寫在 dao 目錄下!因為 dao 目錄下的接口會被掃描到,有固定的功能用處;而我們自定義的通用接口模板只是為了繼承,沒有其他特殊功能!

使用示例:

1、可在 dao 目錄同級創(chuàng)建 general 目錄,在 general 目錄下創(chuàng)建 GeneralDao 接口,并繼承 tkMapper 中的兩個接口。

package com.luis.general;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

/**
 * @Author: Luis
 * @date: 2022/11/9 14:39
 * @description: 自定義的通用接口模板
 */
public interface GeneralDao<T> extends Mapper<T>, MySqlMapper<T> {
}

2、創(chuàng)建 dao 接口,繼承 GeneralDao 即可!

public interface UserDao extends GeneralDao<User> {
}

4. 測試

添加 Junit 和 springboot test 兩個測試依賴:

<!-- junit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <scope>test</scope>
</dependency>
<!-- springboot test -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
</dependency>

寫測試類進行測試:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootTkMapperDemoApplication.class) //啟動類.class
public class UserDaoTest {

    @Autowired
    private UserDao userDao; //如果爆紅線不用管(或Dao接口上添加@Repository注解)

    @Test
    public void test() {

        User user = new User();
        user.setUserName("mike");
        user.setUserPwd("123");
        user.setUserRealname("zhangsan");
        user.setUserImg("user/default.jpg");

        int i = userDao.insert(user);
        System.out.println("========> i = " + i);
    }
}

tkMapper 常用方法之增刪改

  • insert:普通添加
  • insertUseGeneratedKeys:可返回自增 id 的添加
  • updateByPrimaryKey:根據(jù)主鍵修改
  • deleteByPrimaryKey:根據(jù)主鍵刪除
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootTkMapperDemoApplication.class) //啟動類.class
public class UserDaoTest {

    @Autowired
    private UserDao userDao; //如果爆紅線不用管(或Dao接口上添加@Repository注解)

    @Test
    public void testInsert() {

        User user = new User();
        user.setUserName("juno4");
        user.setUserPwd("321");
        user.setUserRealname("lin");
        user.setUserImg("user/default.jpg");

        /**
         * insert: 添加(自增的id不會返回)
         */
        int i = userDao.insert(user);
        System.out.println("========> i = " + i);
        System.out.println(user.getUserId()); //null
    }

    @Test
    public void testInsertUseGeneratedKeys() {

        User user = new User();
        user.setUserName("juno3");
        user.setUserPwd("321");
        user.setUserRealname("lin");
        user.setUserImg("user/default.jpg");

        /**
         * insertUseGeneratedKeys: 添加(自增的id可以返回)
         * 注意:
         *  1. 數(shù)據(jù)庫中主鍵字段需要設置為自增
         *  2. 實體類中主鍵屬性需要使用@Id注解指定;并且需要使用包裝類型Integer,不要使用int
         */
        int i = userDao.insertUseGeneratedKeys(user);
        System.out.println("========> i = " + i);
        System.out.println(user.getUserId()); //10
    }

    @Test
    public void testUpdateByPrimaryKey() {

        User user = new User();
        user.setUserId(10); //必須指定要修改的id
        user.setUserName("juno new");
        user.setUserPwd("000");
        user.setUserRealname("lin new");
        user.setUserImg("new.jpg");

        /**
         * updateByPrimaryKey:根據(jù)主鍵修改
         */
        int i = userDao.updateByPrimaryKey(user);
        System.out.println("========> i = " + i);
        System.out.println(user);
    }

    @Test
    public void testDeleteByPrimaryKey() {
        /**
         * deleteByPrimaryKey:根據(jù)主鍵刪除
         */
        int i = userDao.deleteByPrimaryKey(9);
        System.out.println("========> i = " + i);
    }
}

PS:其實還有根據(jù)自定義條件修改或刪除的方法(使用方法參考帶條件的查詢示例)

tkMapper 常用方法之查詢

  • selectAll:查所有
  • selectByPrimaryKey:根據(jù)主鍵查所有
  • selectByExample:根據(jù)條件查所有
  • selectByRowBounds:分頁查詢
  • selectByExampleAndRowBounds:帶條件的分頁查詢
  • selectCount:查總記錄數(shù)
  • selectCountByExample:根據(jù)條件查總記錄數(shù)
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootTkMapperDemoApplication.class) //啟動類.class
public class UserDaoTest {

    @Autowired
    private UserDao userDao; //如果爆紅線不用管(或Dao接口上添加@Repository注解)

    @Test
    public void testSelectAll() {
        /**
         * selectAll:查詢所有
         */
        List<User> users = userDao.selectAll();
        for (User user : users) {
            System.out.println(user);
        }
    }

    @Test
    public void testSelectByPrimaryKey() {
        /**
         * selectByPrimaryKey:根據(jù)主鍵查詢
         */
        User user = userDao.selectByPrimaryKey(10);
        System.out.println(user);
    }

    @Test
    public void testSelectByExample() {

        //封裝查詢條件
        Example example = new Example(User.class);
        Example.Criteria criteria = example.createCriteria();
        //條件信息(根據(jù)Criteria對象的各種方法進行設置)
        criteria.andEqualTo("userRealname", "lin");
        // criteria.orEqualTo("userPwd", "123");
        // criteria.andLike("userName", "%i%");

        /**
         * selectByPrimaryKey:根據(jù)條件查詢(PS:根據(jù)條件修改或刪除與此類似)
         *      注意:需要設置查詢條件信息,并傳入條件對象
         */
        List<User> users = userDao.selectByExample(example);
        for (User user : users) {
            System.out.println("========> " + user);
        }
    }

    @Test
    public void testSelectByRowBounds() {

        //分頁查詢信息
        int pageNum = 2; //第幾頁
        int pageSize = 3; //每頁顯示多少行
        int start = (pageNum - 1) * pageSize; //起始顯示的下標
        RowBounds rowBounds = new RowBounds(start, pageSize);

        /**
         * selectByRowBounds:查所有的分頁查詢
         */
        List<User> users = userDao.selectByRowBounds(new User(), rowBounds);
        for (User user : users) {
            System.out.println("========> " + user);
        }

        /**
         * selectCount:查詢總記錄數(shù)
         */
        int count = userDao.selectCount(new User());
        System.out.println("========> count = " + count);
    }

    @Test
    public void testSelectByExampleAndRowBounds() {

        //封裝查詢條件
        Example example = new Example(User.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("userRealname", "lin");

        //分頁查詢信息
        int pageNum = 2; //第幾頁
        int pageSize = 2; //每頁顯示多少行
        int start = (pageNum - 1) * pageSize; //起始顯示的下標
        RowBounds rowBounds = new RowBounds(start, pageSize);

        /**
         * selectByExampleAndRowBounds:帶條件的分頁查詢
         */
        List<User> users = userDao.selectByExampleAndRowBounds(example, rowBounds);
        for (User user : users) {
            System.out.println("========> " + user);
        }

        /**
         * selectCountByExample:根據(jù)條件查詢總記錄數(shù)
         */
        int count = userDao.selectCountByExample(example);
        System.out.println("========> count = " + count);
    }
}

tkMapper 關聯(lián)/多表查詢

說明:所有的關聯(lián)/多表查詢都可以由多個單表查詢組成

關聯(lián)/多表查詢實現(xiàn)方式:

方式一:多次使用單表查詢,然后封裝數(shù)據(jù)

方式二:自定義查詢方法和 SQL

情景:基于以上的用戶表,新添加一個訂單表 orders,訂單表中有訂單信息,但是也有用戶 id;

要求:在查詢用戶表的同時還要查詢出用戶的訂單信息,這就涉及到了兩張表的查詢。

具體業(yè)務要求:根據(jù)用戶名查詢用戶的所有信息,包括訂單信息。

數(shù)據(jù)準備

新建訂單表 orders:

DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders`  (
  `order_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `receiver_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `receiver_mobile` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `receiver_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  PRIMARY KEY (`order_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;

INSERT INTO `orders` VALUES (1, 1, 'luis', '13344445555', '湖北武漢');

新建實體類 Order:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "orders")
public class Order {

    @Id
    private Integer orderId;
    private Integer userId;
    private String receiverName;
    private String receiverMobile;
    private String receiverAddress;

}

新建 dao 接口:

注意,此處 dao 接口繼承的是自定義的通用接口模板,相關說明參見之前創(chuàng)建示例 UserDao 的步驟。

也可以直接繼承 tkMapper 的兩個接口。(注意靈活運用?。?/p>

public interface OrderDao extends GeneralDao<Order> {
}

說明:進行關聯(lián)/多表查詢前,需要修改下之前的 User 實體類,在實體類中需要添加一個訂單的字段,以便查詢出用戶所關聯(lián)的訂單信息。

@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "users") //數(shù)據(jù)庫表名和實體類類名不一致需要指定映射關系!
public class User {

    @Id //指定主鍵
    private Integer userId;
    private String userName;
    private String userPwd;
    private String userRealname;
    private String userImg;
    
    //訂單
    private List<Order> orderList;

}

方式一:多次單表查詢

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootTkMapperDemoApplication.class) //啟動類.class
public class UserDaoTest {

    @Autowired
    private UserDao userDao; //如果爆紅線不用管(或Dao接口上添加@Repository注解)
    @Autowired
    private OrderDao orderDao;

    @Test
    public void test() {

        //根據(jù)用戶名查詢用戶信息
        Example example = new Example(User.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("userName", "luis");
        //條件查詢
        List<User> users = userDao.selectByExample(example);
        User user = users.get(0);

        //根據(jù)用戶id查詢訂單信息
        Example example1 = new Example(Order.class);
        Example.Criteria criteria1 = example.createCriteria();
        criteria.andEqualTo("userId", user.getUserId());
        //條件查詢
        List<Order> orders = orderDao.selectByExample(example1);

        //將查詢到的訂單信息設置到user中
        user.setOrderList(orders);

        System.out.println("========> " + user);
    }
}    

方式二:自定義連接查詢

1.UserDao 接口中新建查詢方法

public interface UserDao extends GeneralDao<User> {

    public User selectByUserName(String userName);
}

2.mappers 目錄下創(chuàng)建對應的 UserMapper.xml 文件,自定義查詢 SQL

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.luis.dao.UserDao">
    
    <resultMap id="userMap" type="com.luis.beans.User">
        <id column="user_id" property="userId"/>
        <result column="user_name" property="userName"/>
        <result column="user_pwd" property="userPwd"/>
        <result column="user_realname" property="userRealname"/>
        <result column="user_img" property="userImg"/>
        <collection property="orderList" ofType="com.luis.beans.Order">
            <id column="order_id" property="orderId"/>
            <result column="user_id" property="userId"/>
            <result column="receiver_name" property="receiverName"/>
            <result column="receiver_mobile" property="receiverMobile"/>
            <result column="receiver_address" property="receiverAddress"/>
        </collection>
    </resultMap>

    <select id="selectByUserName" resultMap="userMap">
        select u.user_id,u.user_name,u.user_pwd,u.user_realname,u.user_img,
               o.order_id,o.user_id,o.receiver_name,o.receiver_mobile,o.receiver_address
        from users u inner join orders o
        on u.user_id = o.user_id;
  </select>
</mapper>

3.測試

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootTkMapperDemoApplication.class) //啟動類.class
public class UserDaoTest {

    @Autowired
    private UserDao userDao; //如果爆紅線不用管(或Dao接口上添加@Repository注解)
    @Autowired
    private OrderDao orderDao;

    @Test
    public void test02() {

        //使用自定義的查詢方法
        User user = userDao.selectByUserName("luis");
        System.out.println("========> " + user);
    }
}    

逆向工程

所謂逆向工程,就是通過數(shù)據(jù)庫表,來自動生成實體類、dao 接口和 mapper 文件。

需要注意的是,本逆向工程是最好配合 tkMapper 環(huán)境使用,因為,有一些配置和 tkMapper 相關,如生成的 dao 接口會繼承自定義的通用接口模板,而該通用的接口模板就是繼承了 tkMapper 中的兩個接口,從而才能使用 tkMapper 提供的通用數(shù)據(jù)操作方法;還有,生成的實體類上的注解需要依賴 tkMapper 環(huán)境。

重要說明:本逆向工程使用的 mysql 版本是低版本 5.1.36!經(jīng)測試,如果使用高版本如 8.xxx,很大概率會生成有問題!所以建議項目中統(tǒng)一使用低版本的 MySQL。

1.在 pom.xml 中 build 的 plugins 下添加下列生成器插件

<!-- mybatis-generator-maven-plugin -->
<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.6</version>
    <!-- 生成器配置文件位置;如果還沒有添加,可以先注釋,添加后再放開 -->
    <configuration>
        <configurationFile>
            ${basedir}/src/main/resources/generator/GeneratorConfig.xml
        </configurationFile>
    </configuration>
    <!-- 插件所需的兩個依賴 -->
    <dependencies>
        <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.36</version>
        </dependency>
        <!-- mapper -->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper</artifactId>
            <version>4.1.5</version>
        </dependency>
    </dependencies>
</plugin>

注意:推薦直接復制,但如果想自己在 maven 倉庫中搜索,注意關鍵詞:mybatis-generator-maven-plugin,并且,千萬注意,你搜索到的肯定是依賴,而并非插件!此時,你只需要復制依賴的 gav 坐標,自己在 pom 中創(chuàng)建空 plugin 標簽,將 gav 坐標復制進去即可?。ㄈ绻嚓P依賴刷新添加失敗,可以復制到 dependences 下,重新刷新添加試試,添加成功后復制回來即可)

2.注意查看項目中是否自定義有通用接口模板 GeneralDao,使其繼承 tkMapper 的兩個接口;如果沒有,則在 dao 同級目錄,創(chuàng)建 general 目錄,在 general 目錄下創(chuàng)建自定義通用接口模板 GeneralDao,繼承 tkMapper 的兩個接口;

public interface GeneralDao<T> extends Mapper<T>, MySqlMapper<T> {
}

3.在 resources/generator 下添加 GeneratorConfig.xml 生成器配置(創(chuàng)建并復制后改主要配置即可)

主要需要配置:配置數(shù)據(jù)庫連接、配置實體類存放路徑、配置 XML 存放路徑、配置 DAO 存放路徑、配置 GeneralDao

注意:默認配置是生成指定數(shù)據(jù)庫中所有表,也可以自定義的指定只生成哪些表

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <!-- 引入數(shù)據(jù)庫連接配置 -->
<!--    <properties resource="jdbc.properties"/>-->

    <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <!-- 配置 GeneralDao -->
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="com.luis.general.GeneralDao"/>
        </plugin>

        <!-- 配置數(shù)據(jù)庫連接(注意數(shù)據(jù)庫版本問題,需要使用低版本的,高版本可能出現(xiàn)問題?。?-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/springdb?serverTimezone=UTC"
                userId="root" password="luis">
        </jdbcConnection>

        <!-- 配置實體類存放路徑 -->
        <javaModelGenerator targetPackage="com.luis.beans" targetProject="src/main/java"/>

        <!-- 配置 XML 存放路徑 -->
        <sqlMapGenerator targetPackage="/" targetProject="src/main/resources/mappers"/>

        <!-- 配置 Dao 存放路徑 -->
        <javaClientGenerator targetPackage="com.luis.dao" targetProject="src/main/java" type="XMLMAPPER"/>

        <!-- 配置需要指定生成的數(shù)據(jù)庫和表,% 代表所有表 -->
        <table tableName="%">
            <!-- mysql 配置 -->
<!--            <generatedKey column="id" sqlStatement="Mysql" identity="true"/>-->
        </table>
<!--        <table tableName="tb_roles">-->
<!--            &lt;!&ndash; mysql 配置 &ndash;&gt;-->
<!--            <generatedKey column="roleid" sqlStatement="Mysql" identity="true"/>-->
<!--        </table>-->
<!--        <table tableName="tb_permissions">-->
<!--            &lt;!&ndash; mysql 配置 &ndash;&gt;-->
<!--            <generatedKey column="perid" sqlStatement="Mysql" identity="true"/>-->
<!--        </table>-->
    </context>
</generatorConfiguration>

4.打開 IDEA 右側(cè) Maven 窗口,找到項目--》Plugins--》mybatis-generator--》mybatis-generator:generate,雙擊執(zhí)行逆向生成即可!

示例圖:

5.查看 beans、dao、mappers 目錄下的生成情況,看生成的相關接口是否符合開發(fā)要求,根據(jù)情況可做相關修改,然后進行相關測試。

到此這篇關于SpringBoot中使用tkMapper的方法詳解的文章就介紹到這了,更多相關SpringBoot使用tkMapper內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • spring cloud gateway如何獲取請求的真實地址

    spring cloud gateway如何獲取請求的真實地址

    這篇文章主要介紹了spring cloud gateway如何獲取請求的真實地址問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • java異常處理的簡單練習

    java異常處理的簡單練習

    下面小編就為大家?guī)硪黄猨ava異常處理的簡單練習。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 最常用的1000個Java類(附代碼示例)

    最常用的1000個Java類(附代碼示例)

    這篇文章主要介紹了最常用的1000個Java類(附代碼示例),需要的朋友可以參考下
    2015-04-04
  • intellij idea查看方法被哪些類引用過(推薦)

    intellij idea查看方法被哪些類引用過(推薦)

    這篇文章主要介紹了intellij idea查看方法被哪些類引用過,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • chatgpt java環(huán)境調(diào)用源碼實現(xiàn)demo

    chatgpt java環(huán)境調(diào)用源碼實現(xiàn)demo

    這篇文章主要介紹了chatgpt java環(huán)境調(diào)用源碼實現(xiàn)demo,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • java實現(xiàn)小i機器人api接口調(diào)用示例

    java實現(xiàn)小i機器人api接口調(diào)用示例

    這篇文章主要介紹了java實現(xiàn)小i機器人api接口調(diào)用示例,需要的朋友可以參考下
    2014-04-04
  • spring配置文件加密方法示例

    spring配置文件加密方法示例

    這篇文章主要介紹了spring配置文件加密方法示例,簡單介紹了什么是配置文件,然后分享了在實際生產(chǎn)環(huán)境中,對配置文件不允許出現(xiàn)明文用戶名及密碼等信息需求的Java實現(xiàn)代碼,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • mybatis中使用oracle關鍵字出錯的解決方法

    mybatis中使用oracle關鍵字出錯的解決方法

    這篇文章主要給大家介紹了關于mybatis中使用oracle關鍵字出錯的解決方法,文中通過示例代碼將解決的方法介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-08-08
  • 淺談一段java代碼是如何執(zhí)行的

    淺談一段java代碼是如何執(zhí)行的

    這篇文章主要介紹了淺談一段java代碼是如何執(zhí)行的,小編覺得不錯,下面就一起來了解一下
    2021-04-04
  • Spring Boot 使用 logback、logstash、ELK 記錄日志文件的方法

    Spring Boot 使用 logback、logstash、ELK 記錄日志文件的方法

    這篇文章主要介紹了Spring Boot 使用 logback、logstash、ELK 記錄日志文件的思路詳解,文中給大家提到了logback 取代 log4j的理由,需要的朋友可以參考下
    2017-12-12

最新評論