MybatisPlus配置及使用


環境如下:
SpringBoot2.6.4
Mysql8.0
Idea 2020.3

一、添加依賴

 <!-- mybatisPlus依賴 -->
  <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.5.1</version>
  </dependency>
  <!-- lombok依賴 -->
  <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
  </dependency>
  <!-- mysql依賴 -->
  <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
  </dependency>

二、配置

application.yml文件

spring:
  datasource:
    #數據源類型
    type: com.zaxxer.hikari.HikariDataSource
    #配置連接信息
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
    username: root
    password: 123456
#配置日志
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

三、創建類和接口

User實體類

@Data
public class User {
    private Long id;

    private String name;

    private Integer age;

    private String email;
}

UserMapper接口

@Repository
public interface UserMapper extends BaseMapper<User> {

}

SpringBoot主程序類
@SpringBootApplication
@MapperScan("com.snow.mybatisplus.mapper")
public class MybatisPlusDemo1Application {
    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusDemo1Application.class, args);
    }

}

四、測試

測試類

@SpringBootTest
public class MybatisPlusTest {

    @Autowired
    private UserMapper userMapper;

查詢功能

    /**
     * 測試查詢功能
     */
    @Test
    public void testSelect(){
        //查詢全部記錄
        /*List<User> list = userMapper.selectList(null);
        list.forEach(System.out::println);*/

        //根據id查詢
        /*User user = userMapper.selectById(1);
        System.out.println(user);*/

        //根據map條件查詢
        Map<String,Object> map = new HashMap<>();
        map.put("name","小劉");
        List<User> list = userMapper.selectByMap(map);
        list.forEach(System.out::println);

    }

添加功能

    /**
     * 測試添加功能
     */
    @Test
    public void testInsert(){
        User user = new User();
        user.setName("小王");
        user.setAge(22);
        user.setEmail("wang@qq.com");
        int insert = userMapper.insert(user);
        System.out.println("受影響的行數:"+insert);
        System.out.println(user.getId());
    }

刪除功能

    /**
     * 測試刪除功能
     */
    @Test
    public void testDelete(){
        //根據id刪除
//        int delete = userMapper.deleteById(1506133530385633281L);

        //根據實體類刪除
        User user = new User();
        user.setName("小王");
        int count = userMapper.deleteById(user);

        //根據id批量刪除
//        int deleteBatchIds = userMapper.deleteBatchIds(Arrays.asList(1506134546514542593l,1506134570237485058l));

        //根據map集合設置的條件刪除(必須全滿足)
        /*Map<String,Object> map = new HashMap<>();
        map.put("age",25);
        map.put("name","小王");
        int count = userMapper.deleteByMap(map);*/

        System.out.println("受影響的行數:"+count);
    }

修改功能

    /**
     * 測試修改功能
     */
    @Test
    public void testUpdate(){
        User user = new User();
        user.setId(1506135641521471490L);
        user.setName("小劉");
        user.setAge(19);
        int count = userMapper.updateById(user);
        System.out.println(count);
    }

}

五、常用注解

  • @TableName
    在實體類類型上添加@TableName("t_user"),標識實體類對應的表

  • @tableId

    • value屬性
      在實體類中屬性上通過@TableId將其標識為主鍵
    • type屬性
      type屬性用來定義主鍵策略,常用主鍵策略:

    可以直接在全局配置中配置主鍵策略

#mybatis-plus配置
mybatis-plus:
  #配置全局主鍵策略
  global-config:
    db-config:
      # 配置mybatis-plus的主鍵策略
      id-type: auto
    # 配置mybatis-plus操作表的前綴
    # table-prefix: t_
  • @tableField
    若實體類中的屬性和表中的字段不一致時,在實體類屬性上使用@TableField("username")設置屬性所對應的字段名

  • @tableLogic
    在是否刪除字段上添加@tableLogic注解實現邏輯刪除功能。此時刪除功能和查詢功能都是加上是否刪除的條件

User實體類:

@TableName("user")
public class User {
    @TableId(value = "id")
    private Long id;

    @TableField(value = "user_name")
    private String name;

    private Integer age;

    private String email;

    @TableLogic
    private Integer isDeleted;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM