spring boot构建基础版web项目(二)-spring boot、mybatis整合及相关插件引入
原文作者:弥诺R
原文地址:http://www.minuor.com/1523881561/article
转载声明:转载请注明原文地址,注意版权维护,谢谢!
写前说明
mybatis常用的功能回忆一下,首先肯定要和spring整合,然后就是mybatis的相关配置,如数据库连接池(druid为例)、别名、驼峰规则等基础配置,再就是相关sql的插件,如常用pageHelper分页插件。另外要说的,整个系列的推进都是以一个项目为准,在前一篇博客描述的内容在后续用到不会再赘述。
代码分析
父pom.xml添加依赖
<!-- 数据库相关依赖坐标引入开始 -->
<!-- 数据库连接池druid 包含了druid的依赖,不需要重复引入 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
<!-- spring-mybatis整合
包含:spring-boot-starter-thymeleaf、spring-boot-starter-jdbc、mybatis、mybatis-spring
包含的依赖可以不用重复的引入
-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<!-- alibaba fastjson 这是是为了方便在日志中打印出JSON格式内容 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.46</version>
</dependency>
在项目中创建一个模块utui-dao
utui-dao模块和utui-web、utui-service、utui-facade是同一个级别,utui模块下创建包com.springboot.utui.dao,下面有两个子包mapper、model,在resources目录先创建一个mapper目录,用于放对应的mapper.xml文件。模块结构:
|-utui-dao
|-src
|-main
|-java
|-com.springboot.utui.dao
|-mapper
|-model
|-resources
|-mapper
需要在utui-service模块pom.xml文件里面引入utui-dao的坐标。如下:
<dependency>
<groupId>com.springboot.utui</groupId>
<artifactId>utui-dao</artifactId>
<version>${project.parent.version}</version>
</dependency>
ApplicationBoot.java类
类上添加一个注解指定mapper类所在的位置@MapperScan("com.springboot.utui.dao.mapper")//扫描mapper包
。
application.properties
配置文件中加入数据相关的配置,配置的字段都配有说明。另外想说的是配置名不同但是意义相同。
如:mybatis.configuration.mapUnderscoreToCamelCase=true和mybatis.configuration.map-underscore-to-camel-case=true是相同的,都可以被识别,看个人的书写习惯。
#-------------------------------- datasource properties start --------------------------------#
# 数据库名称
spring.datasource.name=test
# 数据库连接
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/user_db?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
# 数据库用户名
spring.datasource.username=root
# 数据库密码
spring.datasource.password=123456
# 驱动类
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 数据库连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 最大连接数
spring.datasource.maxActive=10
# 最小连接数
spring.datasource.minIdle=2
# 初始化连接数
spring.datasource.initialSize=2
# 获取连接等待超时时间
spring.datasource.maxWait=60000
# 检测关闭空闲连接间隔时间
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 单个连接在连接池中最小存活时间
spring.datasource.minEvictableIdleTimeMillis=300000
# 检查连接sql是否有效,要求查询语句(若为null,testOnBorrow、testOnReturn、testWhileIdle配置不能生效)
spring.datasource.validationQuery=SELECT 'x'
# 连接时执行validationQuery检测连接是否有效
spring.datasource.testWhileIdle=true
# 申请连接时执行validationQuery检测连接是否有效(配置会降低性能)
spring.datasource.testOnBorrow=false
# 归还连接时执行validationQuery检测连接是否有效(配置会降低性能)
spring.datasource.testOnReturn=false
# 开启PSCache
spring.datasource.poolPreparedStatements=true
# 设置PSCache的大小(此缓存是对单个连接)
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# Mapper对应xml文件目录
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
# 实体类目录
mybatis.typeAliasesPackage=com.springboot.utui.dao.model
# 驼峰规则
mybatis.configuration.mapUnderscoreToCamelCase=true
#如果习惯在xml文件中配置,或者某些配置量必须在xml文件中配置,可以指定一个xml配置文件,在其内完成配置
#不建议使用,既然已经用springBoot,再去添加xml文件,混合使用,感觉怪怪的,自己体会吧
#mybatis.config-location=classpath:mybatis/mybatis-config.xml
# pageHelper配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodArguments=true
pagehelper.params=countSql
#-------------------------------- datasource properties end --------------------------------#
BootUtuiController.java
添加测试方法testDBSelectOne、testDBSelectAll
引入BootUtuiService类
@Autowired
private BootUtuiService bootUtuiService;
/**
* 测试单条记录
*/
@RequestMapping(method = RequestMethod.GET, value = "/testDBSelectOne")
@ResponseBody
public UserModel testDBSelectOne() {
log.info(">>>>测试日志/boot/testDBSelectOne");
UserModel userModel = bootUtuiService.testDBSelectOne();
log.info(">>>>>>" + JSON.toJSONString(userModel));
return userModel;
}
/**
* 测试分页数据
*/
@RequestMapping(method = RequestMethod.GET, value = "/testDBSelectAll")
@ResponseBody
public PageInfo<UserModel> testDBSelectAll() {
log.info(">>>>测试日志/boot/testDBSelectAll");
return bootUtuiService.testDBSelectAll();
}
BootUtuiService.java类
@Service
@Slf4j
public class BootUtuiService {
@Autowired
private UserMapper userMapper;
/**
* 单个查询测试
*
* @return
*/
public UserModel testDBSelectOne() {
return userMapper.selectOne();
}
/**
* 使用分页插件pageHelper
*
* @return
*/
public PageInfo<UserModel> testDBSelectAll() {
PageHelper.startPage(1, 10);
List<UserModel> userModels = userMapper.selectAll();
PageInfo<UserModel> userModelPageInfo = new PageInfo<>(userModels);
log.info(">>>>>userModels:" + JSON.toJSONString(userModels));
log.info(">>>>>userModelInfo:" + JSON.toJSONString(userModelInfo));
return userModelInfo;
}
}
UserMapper.java类
此类放在dao的com.springboot.utui.dao.mapper目录下。
public interface UserMapper {
UserModel selectOne();
List<UserModel> selectAll();
}
UserMapper.xml文件
放在dao的resources.mapper目录下。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.springboot.utui.dao.mapper.UserMapper">
<select id="selectOne" resultType="com.springboot.utui.dao.model.UserModel">
select user_name,age,phone from t_user where user_id = 'U20180326'
</select>
<select id="selectAll" resultType="com.springboot.utui.dao.model.UserModel">
select user_name,age,phone from t_user ORDER BY order_id desc
</select>
</mapper>
UserModel.java类
放在dao的com.springboot.utui.dao.model目录下。
@Data
public class UserModel {
private String userName;
private String phone;
private Integer age;
}
上面的内容就这么多了,从pom.xml配置->ApplicationBoot启动类->properties配置文件->Controller控制层->service服务层->dao数据层,完成的一个流程,这样顺序配置下来,基本不会有漏掉的地方,思路也清晰。
启动项目验证
两种启动方式看系列第一篇,这里偷懒只用IDEA启动测试啦!
步骤:
1、启动ApplicationBoot内的main方法
2、浏览器访问http://localhost:8080/boot/testDBSelectOne
,得到数据:{"userName":"zhangsan","phone":"13300001111","age":11}
3、浏览器访问http://localhost:8080/boot/testDBSelectAll
,得到数据:{"pageNum":1,"pageSize":10,"size":10,"startRow":1,"endRow":10,"total":175,"pages":18,"list":[{"userName":"zhangsan","phone":"13300001111","age":11},……,{"userName":"lisi","phone":"13300002222","age":16}}
spring boot构建基础版web项目系列:
上一篇: JS中table表格的行合并