SpringBoot整合Mybatis

78 阅读4分钟

一 集成Mybatis逆向工程插件

1. 在pom里面导入对应的plugin

image.png

<plugin>
   <groupId>org.mybatis.generator</groupId>
   <artifactId>mybatis-generator-maven-plugin</artifactId>
   <version>1.3.5</version>
   <configuration>
      <configurationFile>${project.basedir}/src/main/resources/generatorConfig.xml</configurationFile>
      <verbose>true</verbose>
      <overwrite>true</overwrite>
   </configuration>
   <dependencies>
      <!--必須要引入数据库驱动-->
      <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <!--必须指定版本-->
         <version>8.0.22</version>
      </dependency>
   </dependencies>
</plugin>
2. 在resource下面生成上图用红圈标记的xml文件

image.png

3. 配置xml文件
<!DOCTYPE generatorConfiguration PUBLIC
        "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>

    <!--context 生成上下文 配置生成规则
            id 随意写
           targetRuntime 生成策略
                MyBatis3Simple 只生成简单的CRUD
    -->
    <context id="simple" targetRuntime="MyBatis3Simple">


        <commentGenerator>
            <!--设置是否生成注释  true 不生成  注意: 如果不生成注释,下次生成代码就不会进行合并-->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据源 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai"
                        userId="root"
                        password="123456"/>

        <!--pojo
        javaModelGenerator  java实体生成规则(POJO)
            targetPackage 生成到哪个包下
            targetProject 生成到当前文件的哪个相对路径下
        -->
        <javaModelGenerator targetPackage="com.cctv.entity" targetProject="src/main/java"/>
        <!--mapper xml映射文件
            sqlMapGenerator mapper xml映射文件生成规则
            targetPackage 生成到哪个包下
            targetProject 生成到当前文件的哪个相对路径下
        -->
        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>
        <!--mapper接口
            javaClientGenerator mapper mapper接口生成规则
            type 指定生成的方式
                1.使用注解的方式生成
                2.使用接口绑定的方式生成(要配置sqlMapGenerator)
            targetPackage 生成到哪个包下
            targetProject 生成到当前文件的哪个相对路径下-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.cctv.mapper" targetProject="src/main/java"/>


        <!--配置哪些表需要进行代码生成
        tableName 表名
        domainObjectName pojo类名
        mapperName 对应mapper接口的类名 和 mapper xml文件名
        -->

        <table tableName="student" domainObjectName="Student" mapperName="StudentMapper" />
    </context>
</generatorConfiguration>

这个配置和之前的SSM中Mybatis逆向工程是一样的,可以直接复制过去

4. 在对应的插件处双击,生成对应的javaBean实体类,mapper接口,xml文件

image.png

二 Mybatis和SpringBoot整合

1. 导入mysql驱动和Mybatis场景启动器

image.png

<!-- mysql驱动 -->
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.29</version>
   <scope>runtime</scope>
</dependency>

<!-- mybatis场景启动器 -->
<dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>2.2.2</version>
</dependency>
2. 在application.yml中配置和数据库相关的信息

image.png

#配置数据库连接信息
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  mapper-locations:
    classpath: mapper/*Mapper.xml
  configuration:
    #    蛇形 --> 小驼峰
    map-underscore-to-camel-case: true

logging:
  level:
    com.cctv.mapper: debug
3. 加上对应的Mapper注解
3.1 启动类加上@MapperScan注解

image.png

3.2 如果不在启动类加上@MapperScan注解就在每一个Mapper接口上加上@Mapper注解

image.png

上面两个方法选一个即可

三 SpringBoot分页插件PageHelper

1. 导入PageHelper场景启动器

image.png

<!-- 引入PageHelper场景启动器 -->
<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper-spring-boot-starter</artifactId>
   <version>1.4.5</version>
</dependency>
2. 直接使用

image.png

四 SpringBoot开启事务

SPringBoot需要开启任何一个事物不需要做任何的配置,只需要添加@Transactional注解即可

五 SpringBoot整合Druid

1. 导入Druid场景启动器

image.png

<!--       druid场景启动器-->
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.2.9</version>
</dependency>
2. 在application.yml中配置对应的druid

image.png

spring:

  datasource:
    druid:
      username: root
      password: 123456
      url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
      driver-class-name: com.mysql.cj.jdbc.Driver
      #2.连接池配置
      #初始化连接池的连接数量大小,最小,最大
      initial-size: 5
      min-idle: 5
      max-active: 20
      #配置获取连接等待超时的时间
      max-wait: 60000
      #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 30000
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: true
      test-on-return: false
      max-pool-prepared-statement-per-connection-size: 20
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filters: stat,wall
      filter:
        stat:
          merge-sql: true
          slow-sql-millis: 5000
      #3.基础监控配置
      web-stat-filter:
        enabled: true
        url-pattern: /*
        #设置不统计哪些URL
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
        session-stat-enable: true
        session-stat-max-count: 100
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        reset-enable: true
        #设置监控页面的登录名和密码
        login-username: admin
        login-password: admin
#        allow: 127.0.0.1
        #deny: 192.168.1.100

关于druid这些配置,我们可以直接复制拿过去使用,需要注意的一个点最后有一个login-username和login-password还有一个allow.其实这是因为druid有一个后台管理,我们可以看到,username和password自然就是账号和密码了,如果不设置就可以直接访问,设置则需要账号和密码.allow是允许哪些用户来访问.同时,如果配置了druid数据源,那么前面配置的数据源需要清除掉

druid后台管理系统: http://localhost:8081/druid/index.html 注意自己的端口号