数据库操作是一个项目不可缺少的一部分,工欲善其事必先利其器,一个好的工具会让整个开发效率翻倍,本文介绍SpringBoot通过MyBatis Generator快速整合MyBatis对Mysql的操作。
点击下载
本文基于以下文章开发:
SpringBoot学习之旅(一)—基础项目搭建
内库导入
在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
src/main/resources
**/*.yml
**/*.xml
分别在以下路径下创建对应的
这里模拟用户相关信息
创建一个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;
在src/main/resources目录下创建mybatis-generator.xml,并添加以下配置
添加以下配置,指定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
到处,即自动生成了相关的实体对象及配置文件,同时会一并生成基础的增删改查相关的操作,大大减少了基础配置相关的体力活。
找到启动类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;
}
}
业务流程测试
MVC模式使用Mybatis操作MySql的业务流程开发,可参考SpringBoot学习之旅—MVC设计模式
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
本地浏览器输入:http://127.0.0.1:8082/druid/login.html
使用上面配置的用户名、密码登录即可进入数据库的监控管理界面