目录
一、MyBatisPlus简介
1.1 SpringBoot整合MyBatisPlus入门程序
1.2 MyBatisPlus概述
二、标准数据层开发
2.1 标准数据层CRUD功能
2.2 分页功能
三、DQL控制
3.1 条件查询
四、DML控制
五、快速开发
5.1 代码生成器
MyBatisPlus 简称MP,是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率。
1. 创建新模块,选择Spring初始化,并配置模块相关基础信息
2. 选择当前模块需要使用的技术集(仅保留JDBC)
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注解的)
官网:https://baomidou.com/
MyBatisPlus特性
测试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
#开启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());
}
null值处理
字段映射与表名映射
id生成策略控制
转换成如下
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();