springBoot集成mybatis转换为mybatis-plus怎么实现
发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,这篇文章主要介绍"springBoot集成mybatis转换为mybatis-plus怎么实现",在日常操作中,相信很多人在springBoot集成mybatis转换为mybatis-plus怎么实现
千家信息网最后更新 2024年10月17日springBoot集成mybatis转换为mybatis-plus怎么实现
这篇文章主要介绍"springBoot集成mybatis转换为mybatis-plus怎么实现",在日常操作中,相信很多人在springBoot集成mybatis转换为mybatis-plus怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"springBoot集成mybatis转换为mybatis-plus怎么实现"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
导入maven
com.baomidou mybatis-plus-boot-starter 3.4.2
更新yml文件
#mybatis-plusmybatis-plus: mapperPackage: com.xn.mapper typeAliasesPackage: com.xn.mapper mapperLocations: classpath:mapper/*.xml global-config: db-config: id-type: none configuration: # 字段下划线转驼峰 map-underscore-to-camel-case: false log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
添加扩展文件
(用于扩展 分页/批量新增修改/更多的方法修改 基础可以不加)
BaseEntity 用于定义model
model继承后可以 id自增会回填,更新时间在修改时刷新,创建时间在创建时刷新
import com.baomidou.mybatisplus.annotation.FieldFill;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableField;import com.baomidou.mybatisplus.annotation.TableId;import lombok.AllArgsConstructor;import lombok.Getter;import lombok.NoArgsConstructor;import lombok.Setter;import lombok.experimental.SuperBuilder;import java.io.Serializable;import java.util.Date;@Getter@Setter@SuperBuilder@NoArgsConstructor@AllArgsConstructorpublic abstract class BaseEntity implements Serializable { /** * 创建时间 自增方式 */ @TableField(fill = FieldFill.INSERT) public Date create_time; /** * 更新时间 */ @TableField(fill = FieldFill.INSERT_UPDATE) public Date update_time; /** * ID */ @TableId(value="id" ,type = IdType.AUTO) private Long id;}
CreateAndUpdateMetaObjectHandler
设置刷新 更新时间 创建时间
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;import org.apache.ibatis.reflection.MetaObject;import java.util.Date;/** * MP注入处理器 */public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler { public String CREATE_TIME = "create_time"; public String UPDATE_TIME = "update_time"; @Override public void insertFill(MetaObject metaObject) { if (metaObject.hasGetter(CREATE_TIME)) { if (metaObject.getValue(CREATE_TIME) == null) { this.setFieldValByName(CREATE_TIME, new Date(), metaObject); } } } @Override public void updateFill(MetaObject metaObject) { if (metaObject.hasGetter(UPDATE_TIME)) { if (metaObject.getValue(UPDATE_TIME) == null) { this.setFieldValByName(UPDATE_TIME, new Date(), metaObject); } } }}
批量插入/更新 mapper需要继承这个接口
import com.baomidou.mybatisplus.core.mapper.BaseMapper;import java.util.List;/** * 自定义 Mapper 接口, 实现 自定义扩展 * */public interface BaseMapperPlusextends BaseMapper { /** * 批量插入(mysql) * @param entityList * @return */ Integer insertBatchSomeColumn(List entityList); /** * 批量更新(mysql) * @param entityList * @return */ Integer updateBatchSomeColumn(List entityList);}
将批量方法放到 sql注入器中
import com.baomidou.mybatisplus.core.injector.AbstractMethod;import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;import com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn;import java.util.List;/** * mybatis + sql注入器 */public class MybatisPlusSqlInjector extends DefaultSqlInjector { @Override public ListgetMethodList(Class> mapperClass) { List methodList = super.getMethodList(mapperClass); // 添加InsertBatchSomeColumn方法 methodList.add(new InsertBatchSomeColumn()); methodList.add(new UpdateBatchSomeColumn()); return methodList; }
实现批量更新的方法
import com.baomidou.mybatisplus.core.injector.AbstractMethod;import com.baomidou.mybatisplus.core.metadata.TableInfo;import org.apache.ibatis.mapping.MappedStatement;import org.apache.ibatis.mapping.SqlSource;/** * 批处理更新一些列 * */public class UpdateBatchSomeColumn extends AbstractMethod { @Override public MappedStatement injectMappedStatement(Class> mapperClass, Class> modelClass, TableInfo tableInfo) { String sql = ""; String additional = tableInfo.isWithVersion() ? tableInfo.getVersionFieldInfo().getVersionOli("item", "item.") : "" + tableInfo.getLogicDeleteSql(true, true); String setSql = sqlSet(tableInfo.isWithLogicDelete(), false, tableInfo, false, "item", "item."); String sqlResult = String.format(sql, tableInfo.getTableName(), setSql, tableInfo.getKeyColumn(), "item." + tableInfo.getKeyProperty(), additional); SqlSource sqlSource = languageDriver.createSqlSource(configuration, sqlResult, modelClass); return this.addUpdateMappedStatement(mapperClass, modelClass, "updateBatchSomeColumn", sqlSource); }}
mybatis-plus配置类
import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;import org.mybatis.spring.annotation.MapperScan;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.transaction.annotation.EnableTransactionManagement;/** * mybatis-plus配置类 */@EnableTransactionManagement(proxyTargetClass = true)@Configuration@MapperScan("${mybatis-plus.mapperPackage}")public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 分页插件 interceptor.addInnerInterceptor(paginationInnerInterceptor()); // 乐观锁插件 interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor()); return interceptor; } /** * 分页插件,自动识别数据库类型 */ public PaginationInnerInterceptor paginationInnerInterceptor() { PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); // 设置数据库类型为mysql paginationInnerInterceptor.setDbType(DbType.MYSQL); // 设置最大单页限制数量,默认 500 条,-1 不受限制 paginationInnerInterceptor.setMaxLimit(-1L); return paginationInnerInterceptor; } /** * 乐观锁插件 */ public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() { return new OptimisticLockerInnerInterceptor(); } /** * 元对象字段填充控制器 */ @Bean public MetaObjectHandler metaObjectHandler() { return new CreateAndUpdateMetaObjectHandler(); } /** * sql注入器配置 */ @Bean public MybatisPlusSqlInjector easySqlInjector () { return new MybatisPlusSqlInjector(); }}
还有两个是分页与查询方式可以自己定义
分页类需要继承 IPage,查询类可以继承 IService
开始测试
使用分页查询
@Override public ServerResponse selectTableTestList(TableTestPOJO tableTest) { // 分页查询 1 sql自己写 适用于多表 Pagepage = new Page<>(mutualStep.getPageNum(), mutualStep.getPageSize()); page = tableTestMapper.findTableList(page,new TableTest()); // 分页查询 2 对象筛选 适用单表 条件默认相等 QueryWrapper query = Wrappers.query(); query.like("name","ls"); query.and( wrapper -> wrapper.notLike("name","1").or().like("name","ls") ); query.orderByDesc("id"); Page page = new Page<>(tableTest.getPageNum(), tableTest.getPageSize()); Page pageList = tableTestMapper.selectPage(page, query); return ServerResponse.createBySuccess(pageList); }
逻辑删除定义
/** * 删除状态 0未删除,1删除 */ @TableLogic(value = "0",delval = "1") private Integer is_del;
逻辑删除
@Override public ServerResponse deleteTableTest(MutualStepPage mutualStepPage, Integer... ids) { int number = tableTestMapper.deleteBatchIds(Arrays.asList(ids)); return ServerResponse.createBySuccess(number); }
到此,关于"springBoot集成mybatis转换为mybatis-plus怎么实现"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
更新
时间
方法
查询
插件
学习
更多
配置
乐观
字段
对象
接口
数据
数据库
文件
方式
类型
逻辑
帮助
限制
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怎么在服务器里面开材质包
好用的COMSOL计算服务器
录取高校及专业数据库
mycard服务器
怎么保存动作数据库
查看数据库中表明的语句
长城汽车软件开发岗位
舞钢软件开发公司
qqsmtp邮件服务器
mysql数据库时间查询
计算机网络安全管理师 证书
论大学生网络安全的重要性
浅谈软件开发过程质量控制要点
江苏徐州服务器
广东项目软件开发排行榜
龙之谷数据库登录密码
计算机网络技术是不是特别不好
金华官方软件开发优质推荐
葫芦软件开发
国泰安数据库怎么查询数据
数据库没数据接口怎么测
江西城管通软件开发系统
服务器一区
宁波职教中心网络安全学习什么
今日头条服务器接入点
小学网络安全知识有哪些
网络安全设计文献
打开数据库怎么操作
微软的软件开发团队实行
网络安全行业投资项目