黑马程序员SSM-MyBatisPlus学习笔记

目录

一、MyBatisPlus简介

1.1 SpringBoot整合MyBatisPlus入门程序

1.2 MyBatisPlus概述

二、标准数据层开发

2.1 标准数据层CRUD功能

2.2 分页功能

三、DQL控制

3.1 条件查询

四、DML控制

五、快速开发

5.1 代码生成器


一、MyBatisPlus简介

MyBatisPlus 简称MP,是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率。

1.1 SpringBoot整合MyBatisPlus入门程序

1. 创建新模块,选择Spring初始化,并配置模块相关基础信息

黑马程序员SSM-MyBatisPlus学习笔记_第1张图片

 2. 选择当前模块需要使用的技术集(仅保留JDBC)

黑马程序员SSM-MyBatisPlus学习笔记_第2张图片

3. 手动添加mp起步依赖

注意:由于mp并未收录到idea的系统内置配置,无法直接选择加入


   com.baomidou
   mybatis-plus-boot-starter
   3.4.2

 4. 设置JDBC参数(application.yml

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db?serverTimezon=UTC
    username: root
    password: 155931

5. 制作实体类与表结构(类名与表名对应,属性名与字段名对应

DROP TABLE IF EXISTS `book`;
CREATE TABLE `book`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

public class Book {
    private Integer id;
    private String type;
    private String name;
    private String description;
}

7. 测试类中注入dao接口,测试功能

@SpringBootTest
class Mybatisplus1ApplicationTests {
	@Autowired
	private BookDao bookDao;
	@Test
	void testGetAll() {
		List books = bookDao.selectList(null);
		System.out.println(books);
	}
}

(好像少了一个创建BookDao接口的过程,这里创建完毕后是需要加一个@Mapper注解的)

1.2 MyBatisPlus概述

官网:https://baomidou.com/

MyBatisPlus特性

黑马程序员SSM-MyBatisPlus学习笔记_第3张图片

二、标准数据层开发

2.1 标准数据层CRUD功能

黑马程序员SSM-MyBatisPlus学习笔记_第4张图片

 测试save功能时报错

 Could not set property 'id' of 'class com.itshenzc.domain.Book' with value '1552530752744148994'

查询后得到结果

原因
        mybatisplus存储对象时,对象中有id字段,且ip为空时,会自动给id赋上一个long的雪花id,导致存入int类型的id数据表中,表中id为自增序列。

调整方案
        增加@TableId(value = "id",type= IdType.AUTO)注解,mybatisplus就不会生成id,而交给数据库自动生成。
————————————————
版权声明:本文为CSDN博主「lizz666」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lizz861109/article/details/122382915

其实也可以用数据类型解释,我设置的数据类型为Int而MP赋予的类型是一个Long型,所以赋值不上去,这里如果如果改变Book和数据库中的数据类型为Long的话也是可以的。 

@TableId(value = "id",type= IdType.AUTO)
private Integer id;

lombok

黑马程序员SSM-MyBatisPlus学习笔记_第5张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第6张图片

2.2 分页功能

#开启mp日志 输出到控制台的方法

在application.yml文件中加入

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

MP分页查询功能

1. 设置分页拦截器作为Spring管理的bean

(新建一个config包)

@Configuration
public class MpConfig {
    @Bean
    public MybatisPlusInterceptor mpInterceptor() {
        //1.定义拦截器
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        //2.添加具体拦截器
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}

2. 执行分页查询

void testselectPage(){
		IPage page = new Page (1,3);
		bookDao.selectPage(page,null);
		System.out.println("当前页码"+page.getCurrent());
		System.out.println("当前页显示数"+page.getSize());
		System.out.println("一共多少页"+page.getPages());
		System.out.println("一共多少数据"+page.getTotal());
		System.out.println("数据"+page.getRecords());
	}

三、DQL控制

3.1 条件查询

黑马程序员SSM-MyBatisPlus学习笔记_第7张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第8张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第9张图片

 null值处理

黑马程序员SSM-MyBatisPlus学习笔记_第10张图片

黑马程序员SSM-MyBatisPlus学习笔记_第11张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第12张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第13张图片

 字段映射与表名映射

黑马程序员SSM-MyBatisPlus学习笔记_第14张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第15张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第16张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第17张图片

四、DML控制

id生成策略控制

黑马程序员SSM-MyBatisPlus学习笔记_第18张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第19张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第20张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第21张图片

 转换成如下

黑马程序员SSM-MyBatisPlus学习笔记_第22张图片

黑马程序员SSM-MyBatisPlus学习笔记_第23张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第24张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第25张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第26张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第27张图片

黑马程序员SSM-MyBatisPlus学习笔记_第28张图片 

 黑马程序员SSM-MyBatisPlus学习笔记_第29张图片

 黑马程序员SSM-MyBatisPlus学习笔记_第30张图片

 

五、快速开发

5.1 代码生成器

黑马程序员SSM-MyBatisPlus学习笔记_第31张图片

黑马程序员SSM-MyBatisPlus学习笔记_第32张图片

public class CodeGenerator {
    public static void main(String[] args) {
        //1.获取代码生成器的对象
        AutoGenerator autoGenerator = new AutoGenerator();

        //设置数据库相关配置
        DataSourceConfig dataSource = new DataSourceConfig();
        dataSource.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        autoGenerator.setDataSource(dataSource);

        //设置全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOutputDir(System.getProperty("user.dir")+"/mybatisplus_04_generator/src/main/java");    //设置代码生成位置
        globalConfig.setOpen(false);    //设置生成完毕后是否打开生成代码所在的目录
        globalConfig.setAuthor("黑马程序员");    //设置作者
        globalConfig.setFileOverride(true);     //设置是否覆盖原始生成的文件
        globalConfig.setMapperName("%sDao");    //设置数据层接口名,%s为占位符,指代模块名称
        globalConfig.setIdType(IdType.ASSIGN_ID);   //设置Id生成策略
        autoGenerator.setGlobalConfig(globalConfig);

        //设置包名相关配置
        PackageConfig packageInfo = new PackageConfig();
        packageInfo.setParent("com.aaa");   //设置生成的包名,与代码所在位置不冲突,二者叠加组成完整路径
        packageInfo.setEntity("domain");    //设置实体类包名
        packageInfo.setMapper("dao");   //设置数据层包名
        autoGenerator.setPackageInfo(packageInfo);

        //策略设置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setInclude("tbl_user");  //设置当前参与生成的表名,参数为可变参数
        strategyConfig.setTablePrefix("tbl_");  //设置数据库表的前缀名称,模块名 = 数据库表名 - 前缀名  例如: User = tbl_user - tbl_
        strategyConfig.setRestControllerStyle(true);    //设置是否启用Rest风格
        strategyConfig.setVersionFieldName("version");  //设置乐观锁字段名
        strategyConfig.setLogicDeleteFieldName("deleted");  //设置逻辑删除字段名
        strategyConfig.setEntityLombokModel(true);  //设置是否启用lombok
        autoGenerator.setStrategy(strategyConfig);
        //2.执行生成操作
        autoGenerator.execute();

 

 

你可能感兴趣的:(学习,mybatis,java)