Python 官方文档:入门教程 => 点击学习
目录导入Maven更新yml文件添加扩展文件BaseEntity 用于定义modelCreateAndUpdateMetaObjectHandler批量插入/更新 mapper需要继
mybatis-plus官方
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
#mybatis-plus
mybatis-plus:
mapperPackage: com.xn.mapper
typeAliasesPackage: com.xn.mapper
mapperLocations: classpath:mapper
@TableField(fill = FieldFill.INSERT)
public Date create_time;
@TableField(fill = FieldFill.INSERT_UPDATE)
public Date update_time;
@TableId(value="id" ,type = IdType.AUTO)
private Long id;
}
设置刷新 更新时间 创建时间
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import java.util.Date;
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);
}
}
}
}
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface BaseMapperPlus<T> extends BaseMapper<T> {
Integer insertBatchSomeColumn(List<T> entityList);
Integer updateBatchSomeColumn(List<T> entityList);
}
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;
public class MybatisPlusSqlInjector extends DefaultSqlInjector {
@Override
public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
List<AbstractMethod> 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 = "<script>\n<foreach collection=\"list\" item=\"item\" separator=\";\">\nupdate %s %s where %s=#{%s} %s\n</foreach>\n</script>";
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);
}
}
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;
@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();
}
@Bean
public MybatisPlusSqlInjector easySqlInjector () {
return new MybatisPlusSqlInjector();
}
}
还有两个是分页与查询方式可以自己定义
分页类需要继承 IPage,查询类可以继承 IService
@Override
public ServerResponse selectTableTestList(TableTestPOJO tableTest) {
// 分页查询 1 sql自己写 适用于多表
Page<TableTest> page = new Page<>(mutualStep.getPageNum(), mutualStep.getPageSize());
page = tableTestMapper.findTableList(page,new TableTest());
// 分页查询 2 对象筛选 适用单表 条件默认相等
QueryWrapper<TableTest> query = Wrappers.query();
query.like("name","ls");
query.and(
wrapper ->
wrapper.notLike("name","1").or().like("name","ls")
);
query.orderByDesc("id");
Page<TableTest> page = new Page<>(tableTest.getPageNum(), tableTest.getPageSize());
Page<TableTest> pageList = tableTestMapper.selectPage(page, query);
return ServerResponse.createBySuccess(pageList);
}
@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);
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: springBoot集成mybatis转换为mybatis-plus方式
本文链接: https://www.lsjlt.com/news/159086.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0