SpringBoot学习之旅(二)---整合MyBatis(MyBatis Generator)

文章目录

        • 前言
        • 源码地址
        • 准备工作
          • Pom.xml资源引入
          • 资源目录创建
          • 数据库及表创建
        • generator配置
          • 配置mybatis-generator.xml
          • 配置application.yml
          • 运行generator
        • 配置项目启动类
        • 测试
        • druid连接池及监控统计
          • druid配置
          • durid监控页面查看

前言

数据库操作是一个项目不可缺少的一部分,工欲善其事必先利其器,一个好的工具会让整个开发效率翻倍,本文介绍SpringBoot通过MyBatis Generator快速整合MyBatis对Mysql的操作。

源码地址

点击下载

本文基于以下文章开发:
SpringBoot学习之旅(一)—基础项目搭建

准备工作

Pom.xml资源引入
  • 内库导入
    在pom.xml中添加以下Maven库

            
            
                mysql
                mysql-connector-java
                5.1.41
            
    
            
            
                com.alibaba
                druid-spring-boot-starter
                1.1.10
            
    
            
            
                org.mybatis.spring.boot
                mybatis-spring-boot-starter
                1.3.1
            
    
  • generator plugin 配置
    将以下配置添加到pom.xml的plugins节点下

            
            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.5
                
                    
                        org.mybatis.generator
                        mybatis-generator-core
                        1.3.5
                    
                    
                        mysql
                        mysql-connector-java
                        5.1.41
                    
                
                
                    
                        mybatis generator
                        package
                        
                            generate
                        
                    
                
                
                    
                    true
                    
                    true
                    
                    
                        src/main/resources/mybatis-generator.xml
                    
                
            
    
    • pom下配置resources配置路径扫描配置
            
                
                    src/main/resources
                    
                        **/*.yml
                        **/*.xml
                    
                
            
    

    SpringBoot学习之旅(二)---整合MyBatis(MyBatis Generator)_第1张图片

资源目录创建

分别在以下路径下创建对应的

  • src/main/java
    • dao
      用于存放Mybatis的Dao
    • dataobject
      用于存放数据库的实提对象,这里的字段是和数据库表的字段一一关联,不存在任何业务逻辑参与其中
  • src/main/resources
    • mapping
      存放数据库映射关系的mapping文件
      SpringBoot学习之旅(二)---整合MyBatis(MyBatis Generator)_第2张图片
数据库及表创建

这里模拟用户相关信息
创建一个test的数据库,并创建一个用户表及用户密码表

以下是创建表的脚本

DROP TABLE IF EXISTS `user_info`;
CREATE TABLE `user_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '' COMMENT '用户名(昵称)',
  `sex` tinyint(4) NOT NULL DEFAULT '2' COMMENT '性别  0:女 1:男 2:未知',
  `age` int(11) NOT NULL DEFAULT '0',
  `telphone` varchar(15) DEFAULT NULL COMMENT '手机号码(唯一键),null数据是不受唯一键约束的,防止用户是使用三方登录的',
  `email` varchar(20) NOT NULL DEFAULT '' COMMENT '用户的邮箱',
  `register_mode` varchar(20) NOT NULL DEFAULT '' COMMENT '注册方式:手机号、微信注册、支付宝',
  `third_party_id` varchar(64) NOT NULL DEFAULT '' COMMENT '第三方的id',
  `avatar` varchar(50) NOT NULL DEFAULT '' COMMENT '用户头像',
  PRIMARY KEY (`id`),
  UNIQUE KEY `电话号码唯一` (`telphone`) USING HASH
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `user_password`;
CREATE TABLE `user_password` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '索引ID',
  `encrpt_password` varchar(256) NOT NULL COMMENT '加密的密码',
  `user_id` int(11) NOT NULL COMMENT '关联的用户id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

generator配置

配置mybatis-generator.xml

在src/main/resources目录下创建mybatis-generator.xml,并添加以下配置





    
    

        
        

        
        
        
            
            
        

        
        
        
            
        

        
        
        
            
        

        
        
配置application.yml

添加以下配置,指定spring要扫描的MyBatis的mapper的路径

spring:
  application:
    name: spring-boot-test
  #数据库连接相关配置
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?useSSL=false&serverTimezone=UTC
    username: root
    password: 123456
    #阿里巴巴的druid的mysql连接池
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver

#mybatis mapper路径配置
mybatis:
  mapperLocations: classpath:mapping/*.xml
运行generator
  • 添加generator的运行文件
    SpringBoot学习之旅(二)---整合MyBatis(MyBatis Generator)_第3张图片
    SpringBoot学习之旅(二)---整合MyBatis(MyBatis Generator)_第4张图片
    配置generator的运行路径
    SpringBoot学习之旅(二)---整合MyBatis(MyBatis Generator)_第5张图片

  • 运行generator
    SpringBoot学习之旅(二)---整合MyBatis(MyBatis Generator)_第6张图片
    SpringBoot学习之旅(二)---整合MyBatis(MyBatis Generator)_第7张图片

到处,即自动生成了相关的实体对象及配置文件,同时会一并生成基础的增删改查相关的操作,大大减少了基础配置相关的体力活。

配置项目启动类

找到启动类SpringBootTestApplication,按以下方式配好配置,具体的路径请根据个人项目进行调整

//指定springBoot扫描的整个项目的父路径,即为在改路径下的所有方法将都会被扫描注入
@SpringBootApplication(scanBasePackages = {"com.lupf.springboottest"})
//指定当前项目为Eureka客户端
@EnableEurekaClient
//mybatis mapper扫描的dao路径
@MapperScan("com.lupf.springboottest.dao")
public class SpringBootTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootTestApplication.class, args);
    }
}

测试

  • 简单的功能性测试
    在SpringBootTestApplication 下配置controller并实现MyBatis的读取测试,配置如下:

    //指定springBoot扫描的整个项目的父路径,即为在改路径下的所有方法将都会被扫描注入
    @SpringBootApplication(scanBasePackages = {"com.lupf.springboottest"})
    //指定当前项目为Eureka客户端
    @EnableEurekaClient
    //mybatis mapper扫描的dao路径
    @MapperScan("com.lupf.springboottest.dao")
    //指明当前类为一个controller
    @RestController
    public class SpringBootTestApplication {
        public static void main(String[] args) {
            SpringApplication.run(SpringBootTestApplication.class, args);
        }
    
        @Autowired
        UserDOMapper userDOMapper;
    
        @RequestMapping("/hello")
        public Object getUserById() {
        	//根据用户id获取数据库的用户信息
        	//这里的操作仅仅作为测试使用,真正的项目中并不是使用此方式操作
            UserDO userDO = userDOMapper.selectByPrimaryKey(1);
            return userDO;
        }
    }
    
  • postMan测试效果如下
    数据为手动插入的用户数据
    SpringBoot学习之旅(二)---整合MyBatis(MyBatis Generator)_第8张图片

  • 业务流程测试
    MVC模式使用Mybatis操作MySql的业务流程开发,可参考SpringBoot学习之旅—MVC设计模式

druid连接池及监控统计

druid配置

application.yml下调整mysql的配置如下:

spring:
  application:
    name: spring-boot-test
  #数据库连接相关配置
  datasource:
    url: jdbc:mysql://192.168.1.208:3307/test?useSSL=false&serverTimezone=UTC
    username: root
    password: 123456
    #阿里巴巴的druid的mysql连接池
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    druid:
      #连接池的配置信息
      #初始化大小,最小,最大
      initial-size: 5
      min-idle: 5
      maxActive:  20
      #配置获取连接等待超时的时间
      maxWait:  60000
      #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      timeBetweenEvictionRunsMillis:  60000
      #配置一个连接在池中最小生存的时间,单位是毫秒
      minEvictableIdleTimeMillis: 300000
      validationQuery:  SELECT 1 FROM DUAL
      testWhileIdle:  true
      testOnBorrow: false
      testOnReturn: false
      #打开PSCache,并且指定每个连接上PSCache的大小
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize:  20
      #配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
#      filters: stat,wall,log4j
      #通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      #配置DruidStatFilter
      web-stat-filter:
        enabled:  true
        url-pattern:  "/*"
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
      #配置DruidStatViewServlet
      stat-view-servlet:
        url-pattern:  "/druid/*"
        #IP白名单(没有配置或者为空,则允许所有访问)
        allow:  127.0.0.1,192.168.1.123
        #IP黑名单(存在共同时,deny优先于allow)
        deny: 192.168.1.124
        #禁用HTML页面上的“ResetAll”功能
        reset-enable: false
        #登录名
        login-username: admin
        #登录密码
        login-password: 123456
durid监控页面查看

本地浏览器输入:http://127.0.0.1:8082/druid/login.html
使用上面配置的用户名、密码登录即可进入数据库的监控管理界面
SpringBoot学习之旅(二)---整合MyBatis(MyBatis Generator)_第9张图片

你可能感兴趣的:(SpringBoot)