若依项目学习笔记06——MyBatis配置详解

1. MyBatis配置详解

这个项目的数据层用的是mybatis,所有需要的sql语句都在配置文件中设置,属于半自动,也方便维护;下面我们就来看一下mybatis的配置吧┏ (゜ω゜)=☞

1.1 导入与配置

在spring boot使用mybatis,我们首先要加入相应的依赖,然后在配置文件中(ruoyi-admin下)进行配置,这块其实没什么好讲的...

1.2 配置原理

我们打开 MybatisAutoConfiguration (一般spring boot的自动配置类都是 XxxAutoConfiguration 的形式,如果我们想要对某个内容进行配置,可以进到相应的自动配置类中),然后打开 MybatisProperties 属性
MybatisProperties

@ConfigurationProperties : 这个注解就是spring boot经常能看到的,配合配置文件进行使用,例如这里是设置在配置文件中对mybatis进行配置的话,需要加前缀 mybatis:(大家看看配置文件是不是这样?);然后 MybatisProperties 的其他属性就是其他的配置内容,比如我们用到的 搜索指定包别名typeAliasesPackage、配置mapper的扫描mapperLocations和加载全局的配置文件configLocation等,需要配置什么,在这个类中找到相应属性在配置文件中配置即可;最后有一个 Configuration 配置属性,这个是指定外部的mybatis配置文件,也就是我们项目的 mybatis-config.xml 文件,这个我们项目中添加了,所以在配置文件中就不用添加上去

1.3 重写

需要注意的是,我们重写了 MyBatis,即 framework.config.MyBatisConfig;找到 sqlSessionFactory() 方法,主要是对我们需要在配置文件中添加的配置的部分进行重写,让配置文件内容生效;大家模仿着原来的 MybatisProperties 中配置的写法即可,这里就不详细讲了,大家自行看一下


2. MyBatis的使用

其实默认大家都是学过mybatis的,这里就只是简单跟大家讲一下需要注意的地方就好,大家不介意的话可以去看我之前写的mybatis学习笔记;以下都是用SysConfigMapper.xml作为例子

2.1 关于配置文件

2.2 关于mapper文件

  • 目标接口方法名和mapper文件的id和目标空间等属性要对应,否则无法生效
  • 一般目标接口都要加上注解 @mapper 才能生效,但是我们在 framework.config.ApplicationConfig 中做了配置,直接扫描其所在的包,这样就省去了一个个加的步骤了,大家自行查看
  • 可以发现实体类与数据库属性的名称是没有对应的,一个是驼峰一个是下划线,所以这里就使用了 resultMap 进行对应转换(当然,你也可以去mybatis-config.xml中开启驼峰命名匹配);记得返回类型也要对应~
  • 可以看到其中有一个删除方法,这里内容太多,所以直接使用 <foreach 进行循环来批量删除

3. 分页

3.1 配置详解

我们使用的是 PageHelper分页插件 ,使用前需要添加相应依赖;关于其配置指南,大家可以看一下官方文档;接下来我们看一下配置文件是如何设置的吧~

# PageHelper分页插件
pagehelper: 
  # 方言:即目标数据库类型
  helperDialect: mysql
  # 分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询
  reasonable: true
  # 支持通过 Mapper 接口参数来传递分页参数,默认值false
  supportMethodsArguments: true
  # 配合reasonable食用
  params: count=countSql 

这里特别说明一下,supportMethodsArgumentsparams 参数;

  • supportMethodsArguments : 作用就是讲分页参数(如起始页,末页,排序方式等参数)放进对象中直接使用,就不用我们来传参数;
    testArgumentsObj
  • params : 设置了哪些参数,这些参数就可以在对象中添加

其他更多配置,大家要自己去官方文档,这里只是冰山一角

3.2 插件的使用

一般我们在查询功能部分中添加分页效果,这里我们用 web.controller.system.SysConfigController 的 list()获取参数配置列表方法来讲解

这里的 startPage() 就是开启分页和设置请求分页数据,我们点进去looklook

protected void startPage()
{
    PageDomain pageDomain = TableSupport.buildPageRequest();
    Integer pageNum = pageDomain.getPageNum();
    Integer pageSize = pageDomain.getPageSize();
    if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize))
    {
        //驼峰转换
        String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
        PageHelper.startPage(pageNum, pageSize, orderBy);
    }
}

其中是有关分页的参数,如起始页、末页和排序方法等

3.3 分页代码详解

上面说明了如何使用,这一小节就来说说其中各部分的作用

  • buildPageRequest() : 该方法调用了 getPageDomain() ,获取了前记录起始索引,每页显示记录数等等属性(这些都封装在TableSupport和PageDomain中),然后封装在PageDomain对象中
  • escapeOrderBySql(pageDomain.getOrderBy()) : 这里是讲驼峰转换为下划线;还记得前面嘛?就是mapper文件中,我们从数据库获取数据是将下划线转换成驼峰,这里是将驼峰转换为下划线返回数据库,然后等到相应的分页数据

需要注意的是,加上 startPage() ,则只对下一条能执行的查询方法有效!具体有两个坑点,大家可以看一下若依的官方文档

posted @ 2020-11-30 09:54  刘条条  阅读(1645)  评论(1编辑  收藏  举报