java|手把手教你springboot集成mybatis

手把手教你springboot集成mybatis 很多小伙伴工作多年,但是在每次开始一个新项目的时候都要重新开始搭建项目。另一个就是新手小伙伴对于项目如何从零开始搭建的还存在疑问。在这片文章中,正好一次性解决这两个问题。
这是该项目的github地址,大家可以点击下载使用,也欢迎大家start,谢谢。
首先,我们需要创建一个springboot项目。创建方式分为两种:
1. 创建springboot项目

  • 使用企业版idea创建
java|手把手教你springboot集成mybatis
文章图片

java|手把手教你springboot集成mybatis
文章图片

直接选择【Finish】完成。此时创建了一个空的springboot项目。
  • springboot官网创建
    点击进入springboot官网
java|手把手教你springboot集成mybatis
文章图片

java|手把手教你springboot集成mybatis
文章图片

最终下载到一个zip文件,解压缩后通过idea导入
2. 添加Maven依赖 打开新生成的springboot项目,可以看到pom.xml里面只有少数几个依赖:
4.0.0org.springframework.boot spring-boot-starter-parent 2.7.2 com.example demo1 0.0.1-SNAPSHOT demo1 demo111 org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin 复制代码

为了让项目功能相对完善,我们需要补充以下依赖:
  • 基本的Spring和Spring MVC功能
    org.springframework.boot spring-boot-starter-web 复制代码

    加上这个依赖后,可以使用spring和spring mvc的功能,比如@RestController,@Service,@Autowired,@RequestMapping等等,IOC和AOP的功能都可以使用。
  • 数据库引擎 mysql driver
    mysql mysql-connector-java 8.0.29 复制代码

    目前基本上使用的mysql都是8版本的,所以这里引入8版本的mysql driver;如果有需要引入其他数据库引擎的,可以到maven repository中找合适的依赖。
  • 数据库链接池
    com.alibaba druid 1.2.11 复制代码

    一般像数据库链接这样的资源都是比较重的,也就是说,数据库链接创建和销毁需要消耗很多资源,并且数据库链接是经常使用的。那么对于这种情况,一般我们会将数据库链接进行池化,这也就是我们使用druid的原因。如果小伙伴想使用其他的池化工具,比如dbcp,c3p0,HikariCP等等,也是可以替换的。
  • 【java|手把手教你springboot集成mybatis】mybatis依赖
    org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.2 复制代码

    mybatis其实就是一个基于数据库driver实现数据增删查改功能,并且将操作结果更加友好传递给java应用层的工具。如果没有mybatis的话,我们也可以自己基于driver去操作数据库,但是使用体验确实不好,或者我们自己重新创造一个类似的mybatis框架。
  • 分页依赖
    com.github.pagehelper pagehelper-spring-boot-starter 1.4.3 复制代码

    在业务需求上,我们的某些列表功能往往需要对数据进行分页查询。所以我们提前把这个工具引入进来,它可以在我们执行查询操作的时候,对查询功能实现自动分页,无需开发者过多干预。
  • lombok工具
    org.projectlombok lombok true 复制代码

    这个工具很有用,它让我们避免了写过多的get,set方法,可以自动生成构造函数,hashcode方法,equals方法等等,这就是典型的效率工具,所以强烈推荐使用。
3. 添加插件
  • mybatis-generator插件
    org.mybatis.generator mybatis-generator-maven-plugin 1.4.1 true true ${basedir}/src/main/resources/mybatis/generator/generatorConfig.xml 复制代码

    这是一个代码生成工具,它可以帮我们生成大多数的mybatis代码,比如生成单表的增删查改功能,还有就是单表的复杂条件查询功能。所以这也是一个效率功能,可以少写很多代码。
    插件添加完成后,可以在maven视图中可以看到mybatis-generator插件:
java|手把手教你springboot集成mybatis
文章图片


但是这个插件还不能正常运行,需要后面我们配置好后才行。
4. 配置项目 我们配置了依赖和插件后,需要把一些对应的项目配置也写好,这样才能让这个项目正常运行起来。
配置文件的话,我目前选择比较好用的yml格式的application.yml,小伙伴们也可以把项目中的application.properties重命名一下,改成application.yml。
  • 数据库配置
    spring: # 数据库链接配置 datasource: url: jdbc:mysql://数据库ip:数据库端口/数据库名称?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver username: 数据库用户名 password: 数据库密码 # 链接池 type: com.alibaba.druid.pool.DruidDataSource druid: # 链接池初始化大小 initial-size: 8 # 最大活跃数 max-active: 16 # 最小空闲数 min-idle: 1 # 最大等待时间 max-wait: 60000 复制代码

    博客中不方便对外透露我自己的数据库相关ip、端口等数据,所以就用中文替代,小伙伴可以根据自己的数据库的配置作出对应的修改。
    配置完毕后,我们的项目就可以正确链接数据库,并且也已经使用了链接池化的功能了。
  • mybatis配置
    # mybatis配置 mybatis: check-config-location: true #mybatis框架配置文件,对mybatis的生命周期起作用 config-location: "classpath:mybatis/mybatis-config.xml" #配置xml路径 mapper-locations: "classpath:mybatis/mapper/*Mapper.xml" #配置model包路径 type-aliases-package: "com.example.awesomespring.dao.entity.*" 复制代码

    此外,根据以上配置,我们还需要在resources创建mybatis文件夹,以便我们存放对应的mybatis-config.xml文件以及Mapper.xml文件;
    mybatis-config.xml文件是用来配置mybatis框架如何运行的配置;
    Mapper.xml文件是后续通过mybatis-generator插件自动生成的操作数据库的配置文件;
java|手把手教你springboot集成mybatis
文章图片

mybatis-config.xml:
复制代码

  • mybatis-generator配置
    前面我们在添加mybatis-generator插件的时候就已经指定了相关配置文件的位置,那么我们就把generatorConfig.xml创建出来
java|手把手教你springboot集成mybatis
文章图片

generatorConfig.xml:
复制代码

这个文件头如果有报红,没有关系,不用管,不影响功能。
通过引入generator.properties的方式,我们把里面一些需要修改的位置全部变量化了,所以我们还需要补充一个generator.properties文件:
# 我们需要提供一个driver包所在的路径,一般在.m2文件夹里面,因为所有maven下载的依赖包都会放在这里; # 不知道.m2文件夹位置的可以找一下相关资料 classPathEntry=~/.m2/repository/mysql/mysql-connector-java/8.0.29/mysql-connector-java-8.0.29.jar driverClass=com.mysql.cj.jdbc.Driver # 一定要改成自己的数据库ip、端口和名称 connectionURL=jdbc:mysql://数据库ip:数据库端口/数据库名称?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=UTC # 一定要修改成自己的数据库用户名 userId=数据库用户名 # 一定要修改成自己的数据库密码 password=数据库密码 # 实体类所放的包名,根据自己的项目包名修改,记住要提前把包名创建好 modelTargetPackage=com.example.awesomespring.dao.entity # Mapper.xml存放的路径,在resources里面,记住要提前创建好;要和application.yml里面的mapper-locations路径对上,两个配置的表达方式不同,这个里面不需要加classpath。 sqlMapTargetPackage=mybatis/mapper # mapper类所放的包名,根据自己的项目包名修改,记住要提前把包名创建好 javaClientTargetPackage=com.example.awesomespring.dao.mapper # 哪个数据库 schema=awesome_spring # 哪个表 tableName=account # 生成的实体类名称 domainObjectName=Account 复制代码

至此,我们就可以正常运行mybatis-generator插件了,现在我们打开maven视图,双击mybatis-generator插件:
java|手把手教你springboot集成mybatis
文章图片

java|手把手教你springboot集成mybatis
文章图片

完成后,我们会发现项目中已经自动生成了对应的数据表实体类,Mapper接口,Mapper.xml等文件。
另外还需要注意的是,因为我们生成的Mapper.xml是在resources里面,这些文件是需要在项目打包的时候一起打进去的,所以我们还需要配置一下pom.xml中的build操作,把自动生成的Mapper.xml打包进去:
src/main/resources **/*.properties **/*.yml **/*.xml true 复制代码

最终,我们的项目基本配置完毕,最后一步,让springboot扫描所有的mybatis接口,我们需要在springboot启动类加上@MapperScan(basePackages = "mapper类所放的包名")注解;这样springboot就会把所有的Mapper接口全部扫描进去,达到我们在springboot中集成mybatis的目的了。
全部配置完毕后,我们就可以写代码开始一天的crud了,哈哈!
最后,把application.yml和pom.xml展示出来:
application.yml:
spring: # 数据库链接配置 datasource: url: jdbc:mysql://数据库ip:数据库端口/数据库名称?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver username: 数据库用户名 password: 数据库密码 # 链接池 type: com.alibaba.druid.pool.DruidDataSource druid: # 链接池初始化大小 initial-size: 8 # 最大活跃数 max-active: 16 # 最小空闲数 min-idle: 1 # 最大等待时间 max-wait: 60000 # mybatis配置 mybatis: check-config-location: true #mybatis框架配置文件,对mybatis的生命周期起作用 config-location: "classpath:mybatis/mybatis-config.xml" #配置xml路径 mapper-locations: "classpath:mybatis/mapper/*Mapper.xml" #配置model包路径 type-aliases-package: "com.example.awesomespring.dao.entity.*"# 日志配置 logging: pattern: # 日志输出格式 console: "%d{yyyy-MM-dd HH:mm:ss} %clr(%5p) [%thread] %clr(%logger){cyan} : %msg%n" level: #trace < debug < info < warn < error < fatal # 全局日志级别 root: info # 指定包日志级别 com.example.awesomespring: warn 复制代码

pom.xml
4.0.0org.springframework.boot spring-boot-starter-parent 2.7.2 com.example awesome-spring 0.0.1-SNAPSHOT awesome-spring awesome-spring11 org.springframework.boot spring-boot-starter-web org.projectlombok lombok true org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.2 com.github.pagehelper pagehelper-spring-boot-starter 1.4.3 mysql mysql-connector-java 8.0.29 com.alibaba druid 1.2.11 org.springframework.boot spring-boot-starter-test test src/main/resources **/*.properties **/*.yml **/*.xml true org.mybatis.generator mybatis-generator-maven-plugin 1.4.1 true true ${basedir}/src/main/resources/mybatis/generator/generatorConfig.xml org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok

最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、
Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、
Memcached、MongoDB、Spring、SpringBoot、SpringCloud、RabbitMQ、Dubbo、MyBatis、ZooKeeper、数据结构、算法、
Elasticsearch、Kafka、微服务、Linux等等。可以分享给大家学习。【持续更新中】领取方式【999】就可以领取资料了

    推荐阅读