SpringBoot整合MybatisPlus3.X之自定义Mapper

逆水行舟用力撑,一篙松劲退千寻。这篇文章主要讲述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>

     
  • 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

     
  • 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> { ? }

  • 配置类
    @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.159INFO 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

    【SpringBoot整合MybatisPlus3.X之自定义Mapper】 

    推荐阅读