欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring boot构建基础版web项目(二)-spring boot、mybatis整合及相关插件引入

程序员文章站 2022-04-25 07:59:11
...

原文作者:弥诺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项目系列: