学会了MybatisPlus,代码开发效率提高了10倍( 三 )

UserServiceImpl
/** * @Desc: * @Author: 公众号:知否技术 * @date: 下午9:57 2022/5/11 */@Servicepublic class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {}复制代码2.测试

学会了MybatisPlus,代码开发效率提高了10倍

文章插图
 
我们发现该 IService 接口封装了一些常用的方法 , 极大地提高了我们的开发效率 。
7. 常用注解1.@TableId
MybatisPlus 会默认将实体类中的 id 作为主键 。
@TableId 表示 id 的生成策略 , 常用的有两种:
(1) 基于数据库的自增策略
学会了MybatisPlus,代码开发效率提高了10倍

文章插图
 

学会了MybatisPlus,代码开发效率提高了10倍

文章插图
 
(2) 使用雪花算法策略随机生成
学会了MybatisPlus,代码开发效率提高了10倍

文章插图
 
2.@TableName
如果实体类和数据库的表名不一致 , 可以使用这个注解做映射
例如:
学会了MybatisPlus,代码开发效率提高了10倍

文章插图
 
3.@TableField
当表属性和实体类中属性名不一致时 , 可以使用这个注解做映射:
学会了MybatisPlus,代码开发效率提高了10倍

文章插图
 
8. 分页MybatisPlus 内部封装了分页插件 , 只用简单配置一下就能实现分页功能 。
1.配置类
/** * @Desc: * @Author: 公众号:知否技术 * @date: 下午9:31 2022/5/11 */@Configuration@MapperScan("com.zhifou.mapper")public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(newPaginationInnerInterceptor(DbType.MYSQL));return interceptor;}}复制代码2.测试
@Testvoid testMybatisPlus() {int current = 1;int size = 10;Page<User> userPage = new Page<>(current, size);//获取分页数据List<User> list = userPage.getRecords();list.forEach(user->{System.out.println(user);});Page<User> page = userMapper.selectPage(userPage, null);System.out.println("当前页:" + page.getCurrent());System.out.println("每页条数:" + page.getSize());System.out.println("总记录数:" + page.getTotal());System.out.println("总页数:" + page.getPages());}复制代码9. 代码生成器MybatisPlus 可以帮助我们自动生成 controller、service、dao、model、mapper.xml 等文件 , 极大地提高了我们的开发效率 。
1.引入依赖
<!-- 代码生成器 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.1</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId></dependency>复制代码2.代码生成器工具类
public class CodeGenerator {public static void main(String[] args) {// 连接数据库FastAutoGenerator.create("jdbc:mysql://localhost:3306/ssm?allowPublicKeyRetrieval=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC", "root", "123456").globalConfig(builder -> {builder.author("知否技术") // 设置作者.fileOverride() // 覆盖已生成文件// 设置日期时间.dateType(DateType.ONLY_DATE).outputDir("D:\WorkSpace\idea\mybatisplus_demo\src\main\java"); // 指定输出目录}).packageConfig(builder -> {builder.parent("com.zhifou") // 设置父包名.pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D:\WorkSpace\idea\mybatisplus_demo\src\main\resources\mapper")); // 设置mapperXml生成路径}).strategyConfig(builder -> {builder.addInclude("t_user") // 设置需要生成的表名.addTablePrefix("t_"); // 设置过滤表前// 新增数据 , 自动为创建时间赋值IFill createFill = new Column("created_date", FieldFill.INSERT);IFill updateFill = new Column("updated_date", FieldFill.UPDATE);builder.entityBuilder()// 设置id类型.idType(IdType.ASSIGN_ID)// 开启 Lombok.enableLombok()// 开启连续设置模式.enableChainModel()// 驼峰命名模式.naming(NamingStrategy.underline_to_camel).columnNaming(NamingStrategy.underline_to_camel)// 自动为创建时间、修改时间赋值.addTableFills(createFill).addTableFills(updateFill)// 逻辑删除字段.logicDeleteColumnName("is_deleted");// Restful 风格builder.controllerBuilder().enableRestStyle();// 去除 Service 前缀的 Ibuilder.serviceBuilder().formatServiceFileName("%sService");// mapper 设置builder.mapperBuilder().enableBaseResultMap().enableBaseColumnList();})// 固定.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板 , 默认的是Velocity引擎模板.execute();}}复制代码


推荐阅读