mybatis是一个很好用的工具,但是编写mapper是一件很麻烦的事,自mybatis 3.0开始可以使用注解的方式,极大的简化了xml的编写量,本地想看看mybatis源码,自己扩展写一个工具,在阅读源码过程中发现一个通用mapper的工具包,感觉不用重复造轮子了,简要记录一下spring boot整合通用mapper的使用。

  1. 确保可以正常使用mybatis

  2. pom引入依赖包,starter需要配合@Mapper注解使用,这里采用这种方式,或者使用@MapperScan注解,@tk.mybatis.spring.annotation.MapperScan(basePackages = "扫描包")配合原生mapper使用。

    <dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>{version}</version>
    </dependency>

    我使用的版本是2.0.2

  3. Mybatis 扫描配置(Deprecated, spring 自动配置)

    @Configuration
    //TODO 注意,由于MapperScannerConfigurer执行的比较早,所以必须有下面的注解
    @AutoConfigureAfter(MybatisAutoConfiguration.class)
    public class MyBatisMapperScannerConfig {@Beanpublic MapperScannerConfigurer mapperScannerConfigurer() {MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");mapperScannerConfigurer.setBasePackage("org.springboot.sample.mapper");Properties properties = new Properties();// 这里要特别注意,不要把MyMapper放到 basePackage 中,也就是不能同其他Mapper一样被扫描到。 properties.setProperty("mappers", MyMapper.class.getName());properties.setProperty("notEmpty", "false");properties.setProperty("IDENTITY", "MYSQL");mapperScannerConfigurer.setProperties(properties);return mapperScannerConfigurer;}
    }

  4. 新建BaseMapper类,该类不能被当做普通Mapper一样被扫描 ,不加@Mapper注解,或者放在不同文件夹

    package com.zj.mapper;import tk.mybatis.mapper.common.Mapper;
    import tk.mybatis.mapper.common.MySqlMapper;public interface BaseMapper<T> extends Mapper<T>, MySqlMapper<T> {
    }

  5. 业务处理dao层,扩展BaseMapper

    package com.zj.mapper;import com.zj.model.OrderInfo;
    import org.apache.ibatis.annotations.Mapper;@Mapper
    public interface OrderInfoMapper extends BaseMapper<OrderInfo> {}

  6. 其他和使用普通mybatis一致,service层部分代码

    orderInfoMapper.insertSelective(info);
    OrderInfo info = orderInfoMapper.selectByPrimaryKey(id);

    通用mapper提供常用的一些操作方法: deleteByPrimaryKey, insert, insertSelective, selectByPrimaryKey, updateByPrimaryKeySelective, updateByPrimaryKey, insertList等很多方法,需要你进一步探索

  7. 主键id问题

    当使用insert,insertSelective等方法时,希望返回由数据库产生的逐渐,需要在实体类上增加注解

    @Id
    @GeneratedValue(generator = "JDBC")
    private Long orderInfoId;

    generator="JDBC"表示 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键 ,适用于MySQL,SQL Server等的自增主键。

    或者:

    @Id
    @KeySql(useGeneratedKeys = true)
    private Long id;

  8. 如果实体字段和数据库字段不一致,可以使用@Column注解,其他注解 参见注解

     @Column(name="SCORE_SUM")private String sumScore;

  9. MBG生成参见https://github.com/abel533/Mapper/wiki/4.1.mappergenerator,demo见 git@github.com:silloy/mybatis-generator.git

  10. 更多细节参见wiki

通用Mapper极大的简化了xml文件的编写,但仍需要少许xml文件,有待进一步优化。同时因为这是一个个人项目,使用不太熟悉不建议使用。

本文由 歧途老农 创作,采用 CC BY 4.0 CN 协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

@mapper注解的使用_SpringBoot-Mybatis通用mapper使用相关推荐

  1. ORM框架之Mybatis(六)mybatis通用mapper

    一.简介通用mapper 1.1 官方介绍:(官网:https://mapperhelper.github.io/docs/) 通用Mapper都可以极大的方便开发人员.可以随意的按照自己的需要选择通 ...

  2. 从零搭建Spring Boot脚手架(4):手写Mybatis通用Mapper

    1. 前言 今天继续搭建我们的kono Spring Boot脚手架,上一文把国内最流行的ORM框架Mybatis也集成了进去.但是很多时候我们希望有一些开箱即用的通用Mapper来简化我们的开发.我 ...

  3. tk mybatis通用mapper

    tk mybatis通用mapper 首先要明白, tk mybatis是国人写的对mybatis的增强包, 而不是mybatis官方出的官方包 其github网址如下: https://github ...

  4. mysql通用mapper_详解Mybatis通用Mapper介绍与使用

    使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL.而且,当数据库表结构改动时,对应的所有SQL以及 ...

  5. Mybatis通用Mapper(tk.mybatis)的使用

    一.前言 使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL.而且,当数据库表结构改动时,对应的所有 ...

  6. Mybatis通用Mapper介绍与使用

    前言 使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL.而且,当数据库表结构改动时,对应的所有SQ ...

  7. spring boot整合mybatis+通用mapper+pagehelper分页插件

    spring boot整合mybatis+通用mapper+pagehelper分页插件 pom依赖 <?xml version="1.0" encoding="U ...

  8. Springboot集成mybatis通用Mapper与分页插件PageHelper

    Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...

  9. SSM项目使用Mybatis通用mapper插件tk.mybatis的用法

    SSM项目使用Mybatis通用mapper插件tk.mybatis的用法 https://blog.csdn.net/qq_40060806/article/details/82949722 TKm ...

  10. MyBatis 通用Mapper 入门教程

    通用Mapper 简单教程 Mapper 项目地址: [http://git.oschina.net/free/Mapper] 本教程代码地址: [https://github.com/oakshar ...

最新文章

  1. 他是第一个到达学校的人英语_日本留学:不需要英语成绩的大学盘点·私立学部篇(第三弹)...
  2. python基础练习(七)
  3. PostgreSQL 8.3 以上的中文全文索引使用介绍
  4. react核心虚拟dom_使用虚拟时间测试基于时间的React堆核心流
  5. 还有必要吗?iPhone 11系列终于要全家族支持双卡双待了
  6. hystrix源码小贴士之中断
  7. java 静态缓存_JAVA缓存的实现
  8. Linux服务器的软件安装步骤
  9. CSDN博客添加使用百度统计
  10. 【JS基础】JavaScript语言简介及简单例子
  11. 方差、标准差、协方差
  12. Cannot currently show the desktop
  13. 代码质量保证体系(上)
  14. 高德地图只显示部分区域
  15. 按键精灵连接远程mysql_【按键精灵】按键精灵读取github page 网页,实现脚本远程控制功能...
  16. PMP一模考试错题集+解析 之 人员
  17. (application)javaweb中application的用法
  18. Python 切片
  19. 小程序学习从入门到熟练教程
  20. UE5实现天际线分析效果

热门文章

  1. linux环境下主从复制,Linux之CentOS上配置MariaDB主从复制
  2. java发送html附件_Java发送邮件(图片、附件、HTML)
  3. matlab 自带pca函数,matlab实现主成分分析 princomp函数 PCA中有这个函数
  4. hnu 暑期实训之愚人节的礼物
  5. 数据结构 8-0 排序
  6. 标注工具——yarn的学习笔记
  7. 目标检测——域适应的学习笔记
  8. ubuntu 中怎么添加和删除用户
  9. ESP32驱动LCD液晶屏选型、262K什么意思?SPI写LCD的GRAM时序、MCU液晶屏驱动IC的寄存器功能
  10. c语言printf、sprintf、vsprintf用法和区别