SpringBoot整合MybatisPlus3.X之自定义Mapper(十)
2024-09-01 08:36:42
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/p6spy/p6spy -->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.49</version>
<scope>test</scope>
</dependency>
<!-- for testing -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>application.yml
spring:
datasource:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:h2:tcp://192.168.180.115:19200/~/mem/test
username: root
password: testMapper及注入器
public class CustomizeSuperMapperSqlInjector extends DefaultSqlInjector {
/**
* 如果只需增加方法,保留MP自带方法
* 可以super.getMethodList() 再add
* @return
*/
@Override
public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
List<AbstractMethod> methodList = super.getMethodList(mapperClass);
methodList.add(new FindOne());
return methodList;
}
}
public interface MySuperMapper<T> extends Mapper {
public T findOne(Object id);
}
public interface UserMapper extends MySuperMapper<User> {
}配置类
@Configuration
@MapperScan("com.mp.basemapper.mapper")
public class MybatisPlusConfig {
@Bean
public CustomizeSuperMapperSqlInjector customizeSuperMapperSqlInjector(){
return new CustomizeSuperMapperSqlInjector();
}
}实体类
@Data
@Accessors(chain = true)
public class User {
private Long id;
private String name;
private Integer age;
private String email;
private Integer version;
private Integer deleted;
private Timestamp createTime;
}方法
public class FindOne extends AbstractMethod {
@Override
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
/* 执行 SQL ,动态 SQL 参考类 SqlMethod */
String sql = "select * from " + tableInfo.getTableName()
+ " where " + tableInfo.getKeyColumn() + "=#{" + tableInfo.getKeyProperty() + "}";
/* mapper 接口方法名一致 */
String method = "findOne";
SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
return addSelectMappedStatementForTable(mapperClass, method, sqlSource, tableInfo);
}
}
测试类
@SpringBootTest
class BasemapperApplicationTests {
@Autowired
UserMapper userMapper;
@Test
public void test() {
User user = userMapper.findOne(1L);
System.out.println(user);
}
}
测试结果
2019-10-31 11:59:30.159 INFO 828 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
Consume Time:4 ms 2019-10-31 11:59:30
Execute SQL:select * from user where id=1
最新文章
- onethink和thinkphp3.2学习
- 一些有用的HTML5 pattern属性
- C++学习基础五之函数参数——形参
- DataGridView导出Excel
- 【M14】明智运用异常规范
- UIAlertController 自定义输入框及KVO监听
- jquery如何设置html众标签中的值
- DOS、Mac 和 Unix 文件格式[转]
- 利用 vue-cli 构建一个 Vue 项目
- layui 的学习
- Confluence 6 修改日志文件的大小数量和级别
- Alpha 冲刺 (9/10)
- 【译】第38节---EF6-基于代码的配置
- 终于把joomla 的 protostar 模版的菜单,从垂直改到水平了
- 设置 SSH 通过密钥登录
- Android涉及到的网址都记录在这把~~~~
- 微服务架构之spring cloud turbine
- 大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理(转)
- CSRF攻击的应对之道
- JAVA FILE.renameTo跨文件系统移动文件失败
热门文章
- 先森林后树木:Elasticsearch各版本升级核心内容必看
- 88.CSS---Grid 网格布局教程
- Ocelot自定义管道中间件
- lnmp环境搭设
- SpringCloud-动态配置变化监控-获取变化(支持Config、Nacos)
- How to Get What You Want 如何得到你想要的
- STM32SPI连续读写多个字节会产生时间间隔
- Oracle数据库提权(低权限提升至dba)
- php 安装vld扩展
- c++11::std::is_same/decay