[mybatis]Example的用法
Example类是什么?
Example类指定如何构建一个动态的where子句. 表中的每个non-BLOB列可以被包括在where子句中. 例子是展示此类用法的最好方式.
Example类可以用来生成一个几乎无限的where子句.
Example类包含一个内部静态类 Criteria 包含一个用 anded 组合在where子句中的条件列表. Example类包含一个 List 属性,所有内部类Criteria中的子句会用 ored组合在一起. 使用不同属性的 Criteria 类允许您生成无限类型的where子句.
创建 Criteria 对象 可以使用Example类中的 createCriteria() 或者 or() . 如果 Criteria 对象是用 createCriteria() 创建的,它会自动为 List 属性添加一个 Criteria 对象 - 这使得它更容易写一个简单的where子句, 如果您不需要 or 或者其他几个子句组合的话. 用 or(Criteria criteria) 方法创建 Criteria 对象, 方法里的 criteria 对象会被添加进 Criteria 对象的列表中.
重要 我们推荐您只使用 or() 方法创建 Criteria 对象. 我们相信这种方法使代码更有可读性
如何生成Example类?
mybatis的的配置文件可以使用mybatis-generator工具生成,它就可以帮我们生成example类。
根据 Mybatis 代码生成工具文档,需要一个配置文件,这里命名为:mbgConfiguration.xml放在 src 目录下. 配置文件内容如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><!-- 配置mysql 驱动jar包路径.用了绝对路径 --><classPathEntry location="D:\Work\Java\eclipse\workspace\myBatisGenerator\WebContent\WEB-INF\lib\mysql-connector-java-5.1.22-bin.jar" /><context id="yihaomen_mysql_tables" targetRuntime="MyBatis3"><!-- 为了防止生成的代码中有很多注释,比较难看,加入下面的配置控制 --><commentGenerator><property name="suppressAllComments" value="true" /><property name="suppressDate" value="true" /></commentGenerator><!-- 注释控制完毕 --><!-- 数据库连接 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf8"userId="root"password="password"></jdbcConnection><javaTypeResolver ><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- 数据表对应的model 层 --><javaModelGenerator targetPackage="com.yihaomen.model" targetProject="src"><property name="enableSubPackages" value="true" /><property name="trimStrings" value="true" /></javaModelGenerator><!-- sql mapper 隐射配置文件 --><sqlMapGenerator targetPackage="com.yihaomen.mapper" targetProject="src"><property name="enableSubPackages" value="true" /></sqlMapGenerator><!-- 在ibatis2 中是dao层,但在mybatis3中,其实就是mapper接口 --><javaClientGenerator type="XMLMAPPER" targetPackage="com.yihaomen.inter" targetProject="src"><property name="enableSubPackages" value="true" /></javaClientGenerator><!-- 要对那些数据表进行生成操作,必须要有一个. --><table schema="mybatis" tableName="category" domainObjectName="Category" enableCountByExample="false" enableUpdateByExample="false"enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false"> </table></context></generatorConfiguration>
当我们需要生成example类的时候,需要table里面去掉
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"
example如何使用?
简单查询
这个例子展示了如何用生成后的Example类去生成一个简单的where子句:
TestTableExample example = new TestTableExample();
example.createCriteria().andField1EqualTo(5);
作为另一种选择, 下面的方式也是可以的:
TestTableExample example = new TestTableExample();
example.or().andField1EqualTo(5);
在上面的例子中, 动态生成的where子句是:
where field1 = 5
下面的例子展示了如何用生成后的Example类去生成一个复杂的where子句 (用到了 JSE 5.0 的泛型):
TestTableExample example = new TestTableExample();
example.or()
.andField1EqualTo(5)
.andField2IsNull();
example.or()
.andField3NotEqualTo(9)
.andField4IsNotNull();
List field5Values = new ArrayList();
field5Values.add(8);
field5Values.add(11);
field5Values.add(14);
field5Values.add(22);
example.or()
.andField5In(field5Values);
example.or()
.andField6Between(3, 7);
在上面的例子中, 动态生成的where子句是:
where (field1 = 5 and field2 is null)
or (field3 <> 9 and field4 is not null)
or (field5 in (8, 11, 14, 22))
or (field6 between 3 and 7)
将会返回满足这些条件的记录结果.
去重复查询
您可以在所有的Example类中调用 setDistinct(true) 方法进行强制去重复查询.
Criteria类
Criteria 内部类的每个属性都包含 andXXX 方法,以及如下的标准的SQL查询方法:
IS NULL - 指相关的列必须为NULL
IS NOT NULL - 指相关的列必须不为NULL
= (equal) - 指相关的列必须等于方法参数中的值
<> (not equal) - 指相关的列必须不等于方法参数中的值
(greater than) - 指相关的列必须大于方法参数中的值
= (greater than or equal) - 指相关的列必须大于等于方法参数中的值
< (less than) - 指相关的列必须小于于方法参数中的值
<= (less than or equal) - 指相关的列必须小于等于方法参数中的值
LIKE - 指相关的列必须 “like” 方法参数中的值. 这个方法不用必须加入 ‘%’, 您必须设置方法参数中的值.
NOT LIKE - 指相关的列必须 “not like” 方法参数中的值. 这个方法不用必须加入 ‘%’, 您必须设置方法参数中的值.
BETWEEN - 指相关的列必须在 “between” 方法参数中的两个值之间.
NOT BETWEEN - 指相关的列必须不在 “not between” 方法参数中的两个值之间.
IN - 指相关的列必须在传入的方法参数的list中.
NOT IN - 指相关的列必须不在传入的方法参数的list中.
转载于:https://www.cnblogs.com/duanwandao/p/9984629.html
[mybatis]Example的用法相关推荐
- Mybatis的FIELD用法
Mybatis的FIELD用法 <foreach collection="l" item="id" open=" ORDER BY FIELD( ...
- Mybatis IFNULL函数用法
Mybatis IFNULL函数用法 实例: SELECT IFNULL 假设:select * from user where userId=1有返回结果那么直接返回子查询结果 ((select * ...
- mybatis if test 用法_SpringBoot整合Mybatis-Plus 实战之动态SQL,Mybatis拿得出手的功能之一...
MyBatis的动态SQL是最令人喜欢的功能 在了解 动态SQL之前,你首先得知道一个表达式 OGNL,这个是基础! 面试常问问题 : Mybatis 中$与#的区别? 是将传入的值当做字符串的形式, ...
- 后端技术:mybatis中resultMap用法示例笔记
1.概念 resultMap属于mybatis返回操作结果的一个标签,可以用来映射select查询出来结果的集合,主要作用是将实体类中的字段与数据库表中的字段进行关联映射.并且支持复杂的返回结果类型. ...
- MyBatis动态SQL------------------choose用法
下面主要记录 choose用法 介绍: MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时 ...
- MyBatis中exists用法
MyBatis框架中的exists用法 exists用法 使用示例 总结 exists用法 exists: 如果括号内子查询语句返回结果不为空,说明where条件成立,就会执行主SQL语句 如果括号内 ...
- MyBatis中foreach用法
foreach用法 SQL语句中有时会使用in关键字,如id in {1,2,3},我们可以使用${ids}方式直接获取值,但是这种方法不能防止SQL注入,想避免SQL注入的话就需要使用#{id}的方 ...
- Mybatis中limit用法与分页查询
数据库使用的是mysql 要想在Mybatis中使用分页查询,首先要清楚mysql中limit的用法. limit a,b a是从第a+1条数据开始,b是指读取几条数据 例如:select * fro ...
- MyBatis中select用法
使用MyBatis时,只需要在XML中添加一个select元素,写一个SQL,再做一些简单的配置就可以实现映射 使用XML方式 MyBatis支持用接口来调用方法,通过参数注解@param设置参数名字 ...
- mybatis choose when用法
mybatis choose when的用法: mapper.xml: <select id="query" resultType="map" param ...
最新文章
- JavaScript对象掺杂点原型
- hdu 1520 没有上司的晚会
- 命令查看java的class字节码文件、verbose、synchronize、javac、javap
- BZOJ 1012 最大数
- linux如何自动清buff,centos7
- Oracle查询优化-02给查询结果排序
- 简明python教程 --C++程序员的视角(八):标准库
- python中如何定义颜色_Python图像处理之颜色的定义与使用分析
- case when then else多个条件_CentOS「linux」学习笔记24:if和case多个条件判断
- Undefined control sequence.l.463 \cita
- 多并发编程基础 之进程 Process
- Visual Studio 远程调试设置
- android opencl sdk,在新的Android Studio中使用OpenCL
- 用Java实现邮件的发送
- 计算机科学家刘欣,科学家都爱啥运动?
- ARM嵌入式——堆栈寻址
- 在外部JS中使用validity进行表单验证出现未定义问题
- HDFS启动报错Expected to be able to read up until at least txid but unable to find any edit logs
- 常见的软件测试人员面试问题
- dede(织梦)待审核定更插件