原文作者:弥诺R
原文地址:http://www.minuor.com/1523881561/article
转载声明:转载请注明原文地址,注意版权维护,谢谢!

写前说明

mybatis常用的功能回忆一下,首先肯定要和spring整合,然后就是mybatis的相关配置,如数据库连接池(druid为例)、别名、驼峰规则等基础配置,再就是相关sql的插件,如常用pageHelper分页插件。另外要说的,整个系列的推进都是以一个项目为准,在前一篇博客描述的内容在后续用到不会再赘述。

代码分析

父pom.xml添加依赖



    com.alibaba
    druid-spring-boot-starter
    1.1.0



    com.github.pagehelper
    pagehelper-spring-boot-starter
    1.1.2



    org.mybatis.spring.boot
    mybatis-spring-boot-starter
    1.3.0


    mysql
    mysql-connector-java
    5.1.35



    com.alibaba
    fastjson
    1.2.46

在项目中创建一个模块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的坐标。如下:


    com.springboot.utui
    utui-dao
    ${project.parent.version}
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 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 testDBSelectAll() {
        PageHelper.startPage(1, 10);
        List userModels = userMapper.selectAll();
        PageInfo 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 selectAll();
}
UserMapper.xml文件

放在dao的resources.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项目系列:

  • spring boot构建基础版web项目(一)springboot、thymeleaf控制层基础构建

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

  • spring boot构建基础版web项目(三)-springboot、redis数据缓存整合