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安全错误
数据库的锁怎样保障安全
先进网络技术品牌
党建工作与网络安全心得体会
服务器需要光模块吗
点歌服务器工作原理
亳州共筑网络安全防线
和平精英换服务器如何注销账号
wuauclt 数据库引擎
数据库更改备份文件发现
北京惠校网络技术
珠海东轩互联网科技
服务器主板能插两个cpu吗
大专文凭软件开发
利用数据库管理系统
网络安全概论读书笔记
星宇星网络技术有限公司招聘
衡水软件开发费用
普陀区大型软件开发售后保障
果蔬配送软件开发
基层党建网络安全
类似于数据库的题目
数据库操作部分
吃鸡进那个服务器
思科网络技术学院地址
高性能udp服务器
华为5G 时代的网络技术
浙江云采购中心软件开发
珠海源庆网络技术有限公司
游戏软件开发小公司有哪些
网络服务器ip地址
网络安全让沟通更安心