动态sql是mybatis强大的功能之一,动态sql能大大降低代码的编写数量。
降低工程量。动态sql就是根据不同的条件去拼接sql,实现一个方法,实
现多个功能。
动态sql关键的几个标签:
if、where、trim、choose...when...otherwise、foreach
if标签中*test*关键字用来判断条件是否成立,如果成立,就将if标签中
的sql语句拼接到执行sql中。但是只有if标签有一些不便,我们可以看*where*
关键字后必须加上*1=1*,这样才能保证if标签中的*and*和*where*拼接成功。
当然,肯定有解决办法。接下来看where标签
where标签和 if 标签一块使用举例
where标签的作用:如果where标签中的语句有符合条件的,就会在sql中
加上where关键字,如果if拼接的语句有and或者or直接和where相邻,就会将
and或者or删除
choos标签有两个子标签,when标签和otherwise标签。简单理解,when相当于
switch语句中的case,otherwise标签相当于default。when标签默认执行一个
break,所以只会拼接上一个when里边的sql语句
trim标签的作用:trim会用指定的内容去替换符合条件的内容,以下是属性
介绍:
prefix:语句的前缀
prefixOverrides:prefix中的内容要替代的内容
suffix:语句的后缀
suffixOverrides:suffix中的内容要替代的内容
当拼接的sql语句开头是and或者or时,使用where替换
foreach标签能够对一个数据集合进行遍历,循环拼接到sql语句中。但是只
能是list\set\map集合
dao层的方法:
public List selectss(@Param("ids") List ids);
foreach中的collection属性值对应方法中传的参数名,item属性值是每次
遍历出来的集合中的一个值,separator属性值语句item的分割,open和close
是开头和结尾处的内容
com.github.pagehelper
pagehelper
5.1.4
在mybatis的配置文件中配置拦截器插件.
详情请见官网链接: [link](https://pagehelper.github.io/docs/howtouse/).
PageHelper.startPage()以下的代码在开发环境中放在业务层
public class DemoFenYe {
public static void main(String[] args) throws Exception {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = build.openSession();
AccountMapper mapper = sqlSession.getMapper(AccountMapper.class);
PageHelper.startPage(1,2);
List all = mapper.findAll();
System.out.println(all);
PageInfo allPageInfo = new PageInfo(all);
System.out.println(allPageInfo);
System.out.println(allPageInfo.getList());
}
}
1、PageHelper.startPage(param1,param2);该方法用来开启分页查询,要在查询
方法执行之前开启,第一个参数控制页数,第二个参数控制每页上的数量。
2、PageInfo对象用来包装查出来的结果,PageInfo提供操作数据的各种方法
3、分页查询会自动查询总数
什么是反向工程?
根据数据库中的表的字段信息,生成项目中的dao层、
entity层、mappe.xml层。使得代码开发人员专注于业务
的实现。
官网地址:http://mybatis.org/generator/
主要看三个目录:
①Quick Start Guide 看这个导入依赖
②XML Configuration Reference 看这个配置配置文件
③Running Mybatis Generator 看这个找到执行代码
org.mybatis.generator
mybatis-generator-core
1.4.0
配置文件在项目中和pom.xml同级
gengerator.xml
public static void main(String[] args) throws Exception {
List warnings = new ArrayList();
boolean overwrite = true;
File configFile = new File("generator.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
问题描述:
当第一遍生成完了之后,第二遍生成时,每一个
文件中都有重复的内容。
解决:
第一:每次生成之前都要将原来生成的文件彻底删除
第二:依赖包的版本不要使用4.版本的