MybatisPlus快速入门常用设置(表映射主键策略日志)基本使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MybatisPlus快速入门常用设置(表映射主键策略日志)基本使用相关的知识,希望对你有一定的参考价值。

(目录)


MybatisPlus基础篇

1.概述

​ MybatisPlus是一款Mybatis增强工具,用于简化开发,提高效率。 它在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

​ 官网: https://mp.baomidou.com/


2.快速入门

2.0 准备工作

①准备数据

CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT id,
  `user_name` varchar(20) NOT NULL COMMENT 用户名,
  `password` varchar(20) NOT NULL COMMENT 密码,
  `name` varchar(30) DEFAULT NULL COMMENT 姓名,
  `age` int(11) DEFAULT NULL COMMENT 年龄,
  `address` varchar(100) DEFAULT NULL COMMENT 地址,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

insert  into `user`(`id`,`user_name`,`password`,`name`,`age`,`address`) values (1,ruiwen,123,瑞文,12,山东),(2,gailun,1332,盖伦,13,平顶山),(3,timu,123,提姆,22,蘑菇石),(4,daji,1222,妲己,221,狐山);

②创建SpringBoot工程

添加依赖
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.0</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
创建启动类
@SpringBootApplication
public class SGApplication 

    public static void main(String[] args) 
        SpringApplication.run(SGApplication.class);
    


③准备实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User 
    private Long id;
    private String userName;
    private String password;
    private String name;
    private Integer age;
    private String address;


2.1 使用MybatisPlus

①添加依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

②配置数据库信息

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mp_db?characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

③创建Mapper接口

创建Mapper接口继承BaseMapper接口

public interface UserMapper extends BaseMapper<User> 

BaseMapper接口中已经提供了很多常用方法。所以我们只需要直接从容器中获取Mapper就可以进行操作了,不需要自己去编写Sql语句。

④配置Mapper扫描

​ 在启动类上配置我们的Mapper在哪个包。

@SpringBootApplication
@MapperScan("com.sangeng.mapper")
public class SGApplication 
    public static void main(String[] args) 
        SpringApplication.run(SGApplication.class,args);
    


⑤获取Mapper进行测试

@SpringBootTest
public class MPTest 

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testQueryList()
        System.out.println(userMapper.selectList(null));
    




3.常用设置

3.1 设置表映射规则

​ 默认情况下MP操作的表名就是实体类的类名,但是如果表名和类名不一致就需要我们自己设置映射规则。

3.1.1 单独设置

​ 可以在实体类的类名上加上@TableName注解进行标识。

例如:

​ 如果表名是tb_user,而实体类名是User则可以使用以下写法。

@TableName("tb_user")
public class User 
	//....



3.1.2 全局设置表名前缀

​ 一般一个项目表名的前缀都是统一风格的,这个时候如果一个个设置就太麻烦了。我们可以通过配置来设置全局的表名前缀。

例如:

​ 如果一个项目中所有的表名相比于类名都是多了个前缀: tb_ 。这可以使用如下方式配置

mybatis-plus:
  global-config:
    db-config:
      #表名前缀
      table-prefix: tb_

3.2 设置主键生成策略

3.2.0 测试代码

    @Test
    public void testInsert()
        User user = new User();
        user.setUserName("三更草堂222");
        user.setPassword("7777");
        int r = userMapper.insert(user);
        System.out.println(r);
    

3.2.1 单独设置

​ 默认情况下使用MP插入数据时,如果在我们没有设置主键生成策略的情况下默认的策略是基于雪花算法的自增id。

​ 如果我们需要使用别的策略可以在定义实体类时,在代表主键的字段上加上@TableId注解,使用其type属性指定主键生成策略。

例如:

​ 我们要设置主键自动增长则可以设置如下

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User 
    @TableId(type = IdType.AUTO)
    private Long id;
	//.....


​ 全部主键策略定义在了枚举类IdType中,IdType有如下的取值

3.2.2 全局设置

mybatis-plus:
  global-config:
    db-config:
      # id生成策略 auto为数据库自增
      id-type: auto

3.3 设置字段映射关系

​ 默认情况下MP会根据实体类的属性名去映射表的列名。

​ 如果数据库的列表和实体类的属性名不一致了我们可以使用@TableField注解的value属性去设置映射关系。

例如:

​ 如果表中一个列名叫 address而 实体类中的属性名为addressStr则可以使用如下方式进行配置。

    @TableField("address")
    private String addressStr;

3.4 设置字段和列名的驼峰映射

​ 默认情况下MP会开启字段名列名的驼峰映射, 即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射 。

​ 如果需要关闭我们可以使用如下配置进行关闭。

mybatis-plus:
  configuration:
	#是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射
    map-underscore-to-camel-case: false

3.5 日志

​ 如果需要打印MP操作对应的SQL语句等,可以配置日志输出

配置方式如下:

mybatis-plus:
  configuration:
    # 日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

4.基本使用

4.1 插入数据

​ 我们可以使用insert方法来实现数据的插入。

示例:

    @Test
    public void testInsert()
        User user = new User();
        user.setUserName("张三333");
        user.setPassword("7777888");
        int r = userMapper.insert(user);
        System.out.println(r);
    

4.2 删除操作

​ 我们可以使用deleteXXX方法来实现数据的删除。

示例:

    @Test
    public void testDelete()
        List<Integer> ids = new ArrayList<>();
        ids.add(5);
        ids.add(6);
        ids.add(7);
        int i = userMapper.deleteBatchIds(ids);
        System.out.println(i);
    
    @Test
    public void testDeleteById()
        int i = userMapper.deleteById(8);
        System.out.println(i);
    
    @Test
    public void testDeleteByMap()
        Map<String, Object> map = new HashMap<>();
        map.put("name","提姆");
        map.put("age",22);
        int i = userMapper.deleteByMap(map);
        System.out.println(i);
    

4.3 更新操作

​ 我们可以使用updateXXX方法来实现数据的删除。

示例:

    @Test
    public void testUpdate()
        //把id为2的用户的年龄改为14
        User user = new User();
        user.setId(2L);
        user.setAge(14);
        int i = userMapper.updateById(user);
        System.out.println(i);
    

以上是关于MybatisPlus快速入门常用设置(表映射主键策略日志)基本使用的主要内容,如果未能解决你的问题,请参考以下文章

解决:MySQL表设置bigint主键自增,而使用MybatisPlus插入数据主键出现随机值

解决:MySQL表设置bigint主键自增,而使用MybatisPlus插入数据主键出现随机值

解决:MySQL表设置bigint主键自增,而使用MybatisPlus插入数据主键出现随机值

[MyBatisPlus]常用注解_@TableName_@TableId_@TableField_@TableLogic&&通过全局配置配置主键生成策略

[MyBatisPlus]常用注解_@TableName_@TableId_@TableField_@TableLogic&&通过全局配置配置主键生成策略

MyBatis­Plus快速入门源码笔记共享,拿走吧你