SpringBoot整合MybatisPlus3.X之自定义Mapper(十)
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>
- <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: test
- spring:
Mapper及注入器
- 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> {
-
- }
- public class CustomizeSuperMapperSqlInjector extends DefaultSqlInjector {
配置类
- @Configuration
- @MapperScan("com.mp.basemapper.mapper")
- public class MybatisPlusConfig {
-
- @Bean
- public CustomizeSuperMapperSqlInjector customizeSuperMapperSqlInjector(){
- return new CustomizeSuperMapperSqlInjector();
- }
-
- }
- @Configuration
实体类
- @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;
- }
- @Data
方法
- 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);
- }
- }
-
- public class FindOne extends AbstractMethod {
测试类
- @SpringBootTest
- class BasemapperApplicationTests {
-
- @Autowired
- UserMapper userMapper;
-
- @Test
- public void test() {
- User user = userMapper.findOne(1L);
- System.out.println(user);
- }
-
- }
-
- @SpringBootTest
测试结果
- 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
- 2019-10-31 11:59:30.159 INFO 828 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
SpringBoot整合MybatisPlus3.X之自定义Mapper(十)的更多相关文章
- Spring Boot入门系列(十七)整合Mybatis,创建自定义mapper 实现多表关联查询!
之前讲了Springboot整合Mybatis,介绍了如何自动生成pojo实体类.mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能.mybatis 插件自动生成的mappe ...
- SpringBoot整合MybatisPlus3.X之SQL执行分析插件(十四)
pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...
- SpringBoot整合MyBatis-Plus3.1详细教程
作者:Sans_ juejin.im/post/5cfa6e465188254ee433bc69 一.说明 Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,MP只做增强不做改 ...
- SpringBoot整合MybatisPlus3.X之Wrapper(五)
官方文档说明: 以下出现的第一个入参boolean condition表示该条件是否加入最后生成的sql中 以下代码块内的多个方法均为从上往下补全个别boolean类型的入参,默认为true 以下出现 ...
- SpringBoot整合MybatisPlus3.X之分页插件(四)
注:详细请看2.X博客中,3.X直接上代码. 建议装一个MybatisX插件,可以在Mapper和Xml来回切换 pom.xml <dependencies> <dependency ...
- SpringBoot整合MybatisPlus3.X之乐观锁(十三)
主要适用场景 意图: 当要更新一条记录的时候,希望这条记录没有被别人更新 乐观锁实现方式: 取出记录时,获取当前version 更新时,带上这个version 执行更新时, set version = ...
- SpringBoot整合MybatisPlus3.X之SQL注入器(九)
pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...
- SpringBoot整合MybatisPlus3.X之逻辑删除(三)
pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...
- SpringBoot整合MybatisPlus3.X之Sequence(二)
数据库脚本 DELETE FROM user; INSERT INTO user (id, name, age, email) VALUES (, , 'test1@baomidou.com'), ...
随机推荐
- Python常用端口扫描
from socket import * import sys host=sys.argv[1] service={':'HTTP', ':'SQL_Server', ':'Remote_Destop ...
- Java源码解析|String源码与常用方法
String源码与常用方法 1.栗子 代码: public class JavaStringClass { public static void main(String[] args) { Strin ...
- Java 学习笔记之 线程Yield
线程Yield: yield()方法的作用是放弃当前的CPU资源,将它让给其他的任务去占用CPU执行时间,但放弃的时间不确定,有可能刚刚放弃,马上又获得CPU时间片. public class Yie ...
- 理解Android中的注解与反射
反射 Java反射(Reflection)定义 Java反射机制是指在运行状态中 对于任意一个类,都能知道这个类的所有属性和方法:对于任何一个对象,都能够调用它的任何一个方法和属性: 这样动态获取新的 ...
- Node.js入门教程 第三篇 (模块及路由)
Node.js的模块 Node.js的模块与传统面向对象的类(class)不完全相同.Node.js认为文件即模块,即一个文件是一个模块.单一文件一般只专注做一件事情,保证了代码的简洁性. 创建模块: ...
- macOS10.14.2 gem 更新问题
macOS10.14.2,最近cocoapods不能正常使用了. 终端输入 sudo gem update –system 显示如下错误 ERROR: While executing gem … (G ...
- vue中图片放大镜功能
仿淘宝详情页图片鼠标移过去可对图片放大显示在右侧 效果图如下图,此功能支持PC端与移动端 接下来进入代码实现环节: 先准备两张图片,一张小图片叫 '土味.jpg',大小160*91:一张大图片叫 ' ...
- 案例——TCP上传图片
TCP上传图片 继续做一个TCP的相关案例,在客户端上传一张图片到服务端,服务端收到图片后,给客户端回馈上传成功信息. 实现细节: 对于一些文件的读取,若文件偏大,可以始用缓冲区去读取和写入,可以 ...
- MySQL逻辑架构、SQL加载执行顺序、七种JOIN模式图解
逻辑架构 存储引擎 查看当前安装的mysql提供的存储引擎 查看当前mysql默认的存储引擎 MyISAM和InnoDB SQL加载执行顺序 sql书写顺序 mysql解析器执行的顺序 考点:m ...
- Podman 使用指南
原文链接:Podman 使用指南 Podman 原来是 CRI-O 项目的一部分,后来被分离成一个单独的项目叫 libpod.Podman 的使用体验和 Docker 类似,不同的是 Podman 没 ...