• pom.xml

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-starter</artifactId>
    5. </dependency>
    6. <dependency>
    7. <groupId>com.baomidou</groupId>
    8. <artifactId>mybatis-plus-boot-starter</artifactId>
    9. <version>3.2.0</version>
    10. </dependency>
    11. <dependency>
    12. <groupId>org.projectlombok</groupId>
    13. <artifactId>lombok</artifactId>
    14. </dependency>
    15. <!-- https://mvnrepository.com/artifact/p6spy/p6spy -->
    16. <dependency>
    17. <groupId>p6spy</groupId>
    18. <artifactId>p6spy</artifactId>
    19. <version>3.8.0</version>
    20. </dependency>
    21. <dependency>
    22. <groupId>com.h2database</groupId>
    23. <artifactId>h2</artifactId>
    24. <scope>runtime</scope>
    25. </dependency>

    26. <dependency>
    27. <groupId>com.alibaba</groupId>
    28. <artifactId>fastjson</artifactId>
    29. <version>1.2.49</version>
    30. <scope>test</scope>
    31. </dependency>
    32. <!-- for testing -->
    33. <dependency>
    34. <groupId>org.springframework.boot</groupId>
    35. <artifactId>spring-boot-starter-test</artifactId>
    36. <scope>test</scope>
    37. </dependency>
    38. </dependencies>
  • application.yml

    1. spring:
    2. datasource:
    3. driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    4. url: jdbc:p6spy:h2:tcp://192.168.180.115:19200/~/mem/test
    5. username: root
    6. password: test
  • Mapper及注入器

    1. public class CustomizeSuperMapperSqlInjector extends DefaultSqlInjector {

    2. /**
    3. * 如果只需增加方法,保留MP自带方法
    4. * 可以super.getMethodList() 再add
    5. * @return
    6. */
    7. @Override
    8. public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
    9. List<AbstractMethod> methodList = super.getMethodList(mapperClass);
    10. methodList.add(new FindOne());
    11. return methodList;
    12. }
    13. }

    14. public interface MySuperMapper<T> extends Mapper {

    15. public T findOne(Object id);

    16. }

    17. public interface UserMapper extends MySuperMapper<User> {

    18. }
  • 配置类

    1. @Configuration
    2. @MapperScan("com.mp.basemapper.mapper")
    3. public class MybatisPlusConfig {

    4. @Bean
    5. public CustomizeSuperMapperSqlInjector customizeSuperMapperSqlInjector(){
    6. return new CustomizeSuperMapperSqlInjector();
    7. }

    8. }
  • 实体类

    1. @Data
    2. @Accessors(chain = true)
    3. public class User {
    4. private Long id;
    5. private String name;
    6. private Integer age;
    7. private String email;

    8. private Integer version;

    9. private Integer deleted;

    10. private Timestamp createTime;
    11. }
    1.  
  • 方法

    1. public class FindOne extends AbstractMethod {

    2. @Override
    3. public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
    4. /* 执行 SQL ,动态 SQL 参考类 SqlMethod */
    5. String sql = "select * from " + tableInfo.getTableName()
    6. + " where " + tableInfo.getKeyColumn() + "=#{" + tableInfo.getKeyProperty() + "}";
    7. /* mapper 接口方法名一致 */
    8. String method = "findOne";
    9. SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
    10. return addSelectMappedStatementForTable(mapperClass, method, sqlSource, tableInfo);
    11. }
    12. }
  • 测试类

    1. @SpringBootTest
    2. class BasemapperApplicationTests {

    3. @Autowired
    4. UserMapper userMapper;

    5. @Test
    6. public void test() {
    7. User user = userMapper.findOne(1L);
    8. System.out.println(user);
    9. }

    10. }
  • 测试结果

    1. 2019-10-31 11:59:30.159 INFO 828 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
    2. Consume Time4 ms 2019-10-31 11:59:30
    3. Execute SQLselect * from user where id=1

SpringBoot整合MybatisPlus3.X之自定义Mapper(十)的更多相关文章

  1. Spring Boot入门系列(十七)整合Mybatis,创建自定义mapper 实现多表关联查询!

    之前讲了Springboot整合Mybatis,介绍了如何自动生成pojo实体类.mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能.mybatis 插件自动生成的mappe ...

  2. SpringBoot整合MybatisPlus3.X之SQL执行分析插件(十四)

    pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...

  3. SpringBoot整合MyBatis-Plus3.1详细教程

    作者:Sans_ juejin.im/post/5cfa6e465188254ee433bc69 一.说明 Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,MP只做增强不做改 ...

  4. SpringBoot整合MybatisPlus3.X之Wrapper(五)

    官方文档说明: 以下出现的第一个入参boolean condition表示该条件是否加入最后生成的sql中 以下代码块内的多个方法均为从上往下补全个别boolean类型的入参,默认为true 以下出现 ...

  5. SpringBoot整合MybatisPlus3.X之分页插件(四)

    注:详细请看2.X博客中,3.X直接上代码. 建议装一个MybatisX插件,可以在Mapper和Xml来回切换 pom.xml <dependencies> <dependency ...

  6. SpringBoot整合MybatisPlus3.X之乐观锁(十三)

    主要适用场景 意图: 当要更新一条记录的时候,希望这条记录没有被别人更新 乐观锁实现方式: 取出记录时,获取当前version 更新时,带上这个version 执行更新时, set version = ...

  7. SpringBoot整合MybatisPlus3.X之SQL注入器(九)

    pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...

  8. SpringBoot整合MybatisPlus3.X之逻辑删除(三)

    pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...

  9. SpringBoot整合MybatisPlus3.X之Sequence(二)

    数据库脚本 DELETE FROM user; ​ INSERT INTO user (id, name, age, email) VALUES (, , 'test1@baomidou.com'), ...

随机推荐

  1. Python常用端口扫描

    from socket import * import sys host=sys.argv[1] service={':'HTTP', ':'SQL_Server', ':'Remote_Destop ...

  2. Java源码解析|String源码与常用方法

    String源码与常用方法 1.栗子 代码: public class JavaStringClass { public static void main(String[] args) { Strin ...

  3. Java 学习笔记之 线程Yield

    线程Yield: yield()方法的作用是放弃当前的CPU资源,将它让给其他的任务去占用CPU执行时间,但放弃的时间不确定,有可能刚刚放弃,马上又获得CPU时间片. public class Yie ...

  4. 理解Android中的注解与反射

    反射 Java反射(Reflection)定义 Java反射机制是指在运行状态中 对于任意一个类,都能知道这个类的所有属性和方法:对于任何一个对象,都能够调用它的任何一个方法和属性: 这样动态获取新的 ...

  5. Node.js入门教程 第三篇 (模块及路由)

    Node.js的模块 Node.js的模块与传统面向对象的类(class)不完全相同.Node.js认为文件即模块,即一个文件是一个模块.单一文件一般只专注做一件事情,保证了代码的简洁性. 创建模块: ...

  6. macOS10.14.2 gem 更新问题

    macOS10.14.2,最近cocoapods不能正常使用了. 终端输入 sudo gem update –system 显示如下错误 ERROR: While executing gem … (G ...

  7. vue中图片放大镜功能

    仿淘宝详情页图片鼠标移过去可对图片放大显示在右侧 效果图如下图,此功能支持PC端与移动端 接下来进入代码实现环节: 先准备两张图片,一张小图片叫 '土味.jpg',大小160*91:一张大图片叫 ' ...

  8. 案例——TCP上传图片

    TCP上传图片   继续做一个TCP的相关案例,在客户端上传一张图片到服务端,服务端收到图片后,给客户端回馈上传成功信息. 实现细节: 对于一些文件的读取,若文件偏大,可以始用缓冲区去读取和写入,可以 ...

  9. MySQL逻辑架构、SQL加载执行顺序、七种JOIN模式图解

    逻辑架构   存储引擎 查看当前安装的mysql提供的存储引擎 查看当前mysql默认的存储引擎 MyISAM和InnoDB SQL加载执行顺序 sql书写顺序 mysql解析器执行的顺序  考点:m ...

  10. Podman 使用指南

    原文链接:Podman 使用指南 Podman 原来是 CRI-O 项目的一部分,后来被分离成一个单独的项目叫 libpod.Podman 的使用体验和 Docker 类似,不同的是 Podman 没 ...