目录
环境:
步骤:
1.添加依赖
2.配置代码
3.运行
1.测试生成的service
1.1、service用法
2.分页查询
2.1、分页插件配置
2.2、测试
3.源码
jdk:1.8
springboot版本:2.7.15
mybatis-plus版本:3.5.1以上
(本文章用的当前最新版本:3.5.3.2,代码适用于3.5.1版本以上的版本)
com.baomidou mybatis-plus-boot-starter3.5.3.2 com.baomidou mybatis-plus-generator3.5.3.2 org.freemarker freemarker
在测试类中创建一下测试类运行就行。
运行之前需要修改一些配置信息。
1.修改成自己的数据库链接地址、账号、密码
2.进行全局配置globalConfig,参数解释:
- author:作者名称,设置以后代码生成时候类注释上会有设置的名字
- outputDir:指定输出目录,这里设置到/src/main/java目录就行,生产的文件会输出到这个目录下
- enableSwagger:如果项目中配置了swagger,可以打开,如果没配置注释调就行
3.进行包配置packageConfig,参数解释:
- parent:设置父包名,这个设置你自己的包名就可以,生产代码时,此属性会配合outputDir属性,在/src/main/java目录下生成一个包
- pathInfo:此属性是指定生成mapper.xml文件的路径
4.进行策略配置strategyConfig,参数解释:
- addInclude:设置生成的表名称,如果多张表用逗号","分割开
- addTablePrefix:设置过滤表前缀,如果表有固定的前缀,可以在这里设置,生产代码时会将前缀去掉,如:t_user表,如果设置此属性,生成的实体类为User,如果不设置则生成的实体类名称为:TUser
package com.iterge.iterge_pre; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.OutputFile; import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.sql.Types; import java.util.Collections; @SpringBootTest class ItergePreApplicationTests { @Test void contextLoads() { FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/test", "root", "root") .globalConfig(builder -> { builder.author("iterge") // 设置作者 // 开启 swagger 模式 默认不开启 //.enableSwagger() .outputDir("/Users/liuph/dev/space/idea/iterge_pre/src/main/java"); // 指定输出目录 }) .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> { int typeCode = metaInfo.getJdbcType().TYPE_CODE; if (typeCode == Types.SMALLINT) { // 自定义类型转换 return DbColumnType.INTEGER; } return typeRegistry.getColumnType(metaInfo); })) .packageConfig(builder -> { // 设置父包名 builder.parent("com.iterge.iterge_pre") // 设置父包模块名 //.moduleName("mapper") // 设置mapperXml生成路径 .pathInfo(Collections.singletonMap(OutputFile.xml, "/Users/liuph/dev/space/idea/iterge_pre/src/main/resources/mapper")); }) .strategyConfig(builder -> { // 设置需要生成的表名 builder.addInclude("t_user,user_info"); // 设置过滤表前缀 //.addTablePrefix("t_", "c_"); }) // 使用Freemarker引擎模板,默认的是Velocity引擎模板 .templateEngine(new FreemarkerTemplateEngine()) .execute(); } }
启动测试类,生成结果如下:
此代码生成器会同时生成:controller、service、serviceImpl、mapper、entity以及mapper.xml文件,没有的目录也会自动生成
package com.iterge.iterge_pre.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.iterge.iterge_pre.entity.TUser; import com.iterge.iterge_pre.entity.User; import com.iterge.iterge_pre.mapper.TUserMapper; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; import java.util.List; import java.util.Optional; /** * @author liuph * @date 2023/9/6 10:49:02 */ @SpringBootTest @Slf4j public class TUserServiceTest { @Resource private ITUserService itUserService; @Test public void selectById(){ OptionaloptById = itUserService.getOptById(1); log.info("通过id查询数据:{}",optById.get()); } @Test public void queryAll(){ List list = itUserService.list(); log.info("获取全量数据:{}",list.size()); } @Test public void queryByUser(){ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(TUser::getName,"zhangsan"); List list = itUserService.list(queryWrapper); log.info("自定义条件查询:{}",list.size()); } }
mybits-plus的分页查询要引入分页插件
package com.iterge.iterge_pre.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author liuph * @date 2023/9/6 11:30:02 */ @Configuration public class MybatisPlusConfig { /** * 添加分页插件 */ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); //如果配置多个插件,切记分页最后添加 interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); //如果有多数据源可以不配具体类型 否则都建议配上具体的DbType //interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); return interceptor; } }
package com.iterge.iterge_pre.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.iterge.iterge_pre.entity.TUser; import com.iterge.iterge_pre.entity.User; import com.iterge.iterge_pre.mapper.TUserMapper; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; import java.util.List; import java.util.Optional; /** * @author liuph * @date 2023/9/6 10:49:02 */ @SpringBootTest @Slf4j public class TUserServiceTest { @Resource private ITUserService itUserService; @Test public void queryByPage(){ IPagepage = new Page<>(); page.setSize(2) .setCurrent(2); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(TUser::getName,"test"); List list = itUserService.list(page,queryWrapper); log.info("分页查询:{}",list.size()); } }
码云
创作不易,你的鼓励是我创作的动力~
有什么疑问可以评论区留言哦~