您的足迹:首页 > 精彩文章 >MyBatis Generator产生的Example类

MyBatis Generator产生的Example类


1.MyBatis Generator产生的Example类简介

Example类用于构造复杂的筛选条件。

基本概念


  • Criterion
  • Criterion是最基本,最底层的Where条件,用于字段级的筛选,feild用于指代字段名字,列举如下:

    只有一个条件,不需要其他参考值
    feild IS NOLL
    feild IS NOT NULL

    与一个参考值进行算数运算
    feild > value
    feild >= value
    feild = value
    feild <> value
    feild <= value feild < value 与一个参考值进行模糊查询,参值中的%,?只能在构造查询条件时手动指定。 feild LIKE value feild NOT LIKE value 介于两个参考值之间 feild BETWEEN value AND secondValue 在或不在一个参考值集合中,item来自于value集合 feild IN (item,item,item,...) feild NOT IN (item,item,item,...) MyBatis Generator会为每个字段产生如上的Criterion,如果表的字段比较多,产生的Example类会十分庞大。理论上通过Example类可以构造你想到的任何筛选条件。

  • Criteria
  • Criteria包含一个Cretiron的集合,每一个Criteria对象内包含的Cretiron之间是由AND连接的,是逻辑与的关系。

  • oredCriteria
  • Example内有一个成员叫oredCriteria,是Criteria的集合,就想其名字所预示的一样,这个集合中的Criteria是由OR连接的,是逻辑或关系。oredCriteria就是ORed Criteria。


2.MyBatis Generator产生的Example类用法


 public static void main(String[] args) {
		LeaverecordsExample example = new LeaverecordsExample();
		//构造一个 ID 大于等于2 的条件
		example.createCriteria().andIdGreaterThanOrEqualTo(2);
		//初始化一个SqlSession
		SqlSession session = ToolsMyBatis.getSession();
		try {
			//创建代理类
			LeaverecordsMapper leaverecordsMapper = session.getMapper(LeaverecordsMapper.class);
			//通过代理类调用MyBatis Generator自动生成的查询接口
			List<Leaverecords> list = leaverecordsMapper.selectByExample(example);
			//打印集合的长度
			System.out.println(list.size());
		} catch (Exception e) {
			//异常抛出
			e.printStackTrace();
		}finally{
			//关闭SqlSession
			ToolsMyBatis.closeSession();
		}
	}


3.去掉MyBatis Generator产生的Example类


<table schema="minghan" tableName="sys_admin" domainObjectName="Admin"
 enableCountByExample="false"    enableUpdateByExample="false" enableDeleteByExample="false" 
 enableSelectByExample="false" selectByExampleQueryId="false"></table>
      Table节点的属性

 属性
描述
schema 数据库 schema - 如果您的数据库不使用 schema ,或者有一个默认的 schema 您不需要设置 schema。 如果需要,指定的值可以包含SQL通配符。
catalog 数据库 catalog - 如果您的数据库不使用 catalog,或者有一个默认的 catalog,您就不需要设置 catalog。
alias 如果指定,这个值会用在生成的select查询SQL的表的别名和列名上。 列名会被别名为 alias_actualColumnName(别名_实际列名) 这种模式。
domainObjectName 生成对象的基本名称。如果没有指定,MBG会自动根据表名来生成名称。 这个(指定或者自动生成的)名字将用于计算实体类的名称和DAO类的名称。

您可以在实体对象的名字上指定包名分割。 例如,您可以指定foo.Bar,然后实体对象的名字会是 Bar,包名foo会添加到生成器配置中指定的目标包后面。

enableInsert 指定是否生成Insert语句。

默认值是 true

enableSelectByPrimaryKey 指定是否生成通过主键查询的语句。 无论这个怎么设置,当表不存在主键的时候,不会生成这个语句。

默认值是 true

enableSelectByExample 指定是否生成通过Example查询的语句。 这个语句支持运行时生成多种不同条件的动态查询。

默认值是 true

enableUpdateByPrimaryKey 指定是否生成通过主键更新的语句。 无论这个怎么设置,当表不存在主键的时候,不会生成这个语句。

默认值是 true

enableDeleteByPrimaryKey 指定是否生成通过主键删除的语句。 无论这个怎么设置,当表不存在主键的时候,不会生成这个语句。

默认值是 true

enableDeleteByExample 指定是否生成通过Example删除的语句。 这个语句支持运行时生成多种不同的条件动态删除。

默认值是 true

enableCountByExample 指定是否生成通过Example查询总数的语句。 这个语句将返回满足Example条件的数据总数。

默认值是 true

enableUpdateByExample 指定是否生成通过Example更新的语句。 这个语句将更新满足Example条件的数据。 如果设置为True,UpdateByExampleSelective语句也会生成。 这个语句只会更新那些参数中值不为null的的列。

默认值是 true

selectByPrimaryKeyQueryId 这个值会以"'<value>' as QUERYID"这种形式被添加到通过主键查询的语句的select列中。 这可能对在运行时的DBA跟踪工具中标记查询有用。 如果您使用这个值,您需要为MBG生成的每一个查询指定一个唯一的id。
selectByExampleQueryId 这个值会以"'<value>' as QUERYID"这种形式被添加到通过Example查询的语句的select列中。 这可能对在运行时的DBA跟踪工具中标记查询有用。 如果您使用这个值,您需要为MBG生成的每一个查询指定一个唯一的id。
modelType 如果您需要,这个值可以用来重写默认的模型类型。 如果没有指定,MBG将会生成基于上下文默认模型类型的实体对象。 模型类型定义了MBG如何生成实体类。 有一些模型类型MGB会为每个表生成一个单独的实体类。 另外一些模型,MGB会根据表结构生成不同的一些类。 这个属性有以下可选值:
conditional 这个模型和hierarchical类似,除了如果那个单独的类将只包含一个字段,将不会生成一个单独的类。 因此,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类,会将该字段合并到基本实体类中。
flat 该模型为每一张表只生成一个实体类。这个实体类包含表中的所有字段。
hierarchical 如果表有主键,那么该模型会产生一个单独的主键实体类,如果表还有BLOB字段, 则会为表生成一个包含所有BLOB字段的单独的实体类,然后为所有其他的字段生成一个单独的实体类。 MBG会在所有生成的实体类之间维护一个继承关系(注:BLOB类 继承 其他字段类 继承 主键类)。
escapeWildcards 这个属性表示当查询列,是否对schema和表名中的SQL通配符 ('_' and '%') 进行转义。 对于某些驱动当schema或表名中包含SQL通配符时(例如,一个表名是MY_TABLE,有一些驱动需要将下划线进行转义)是必须的。

默认值是 false.

delimitIdentifiers 这个属性表示当查询表并且在生成的SQL中分隔标识符时,是否使用指定的确切的值。 有关更多详细信息,请参见上面的详述。

分隔符在 <context> 元素上指定。

默认值是 false。除非 catalog, schematableName 属性值包含空白时,是 true.

delimitAllColumns 指示是否给生成SQL中所有的列名添加分隔符。 这是一种给每个列添加<columnOverride>来指定列需要被分隔的替代方式。 这对类似PostgreSQL这种使用小写标识符的数据库很有用。

分隔符在 <context> 元素上指定。

默认值是 false.


本博客所有文章如无特别注明均为原创。作者:0nise复制或转载请以超链接形式注明转自 0nise's Blog ---1931sec TeAm!
原文地址《MyBatis Generator产生的Example类

相关推荐

  • blogger

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)