mybatis Example条件查询
来源:互联网 发布:vscode css提示插件 编辑:程序博客网 时间:2024/06/16 17:47
转载自:http://tianxingzhe.blog.51cto.com/3390077/1741268/
Criterion是最基本,最底层的Where条件,用于字段级的筛选
Criteria
Criteria包含一个Cretiron的集合,每一个Criteria对象内包含的Cretiron之间是由AND连接的,是逻辑与的关系。
oredCriteria
Example内有一个成员叫oredCriteria,是Criteria的集合,就想其名字所预示的一样,这个集合中的Criteria是由OR连接的,是逻辑或关系。oredCriteria就是ORed Criteria。
其他
Example类的distinct字段用于指定DISTINCT查询。
orderByClause字段用于指定ORDER BY条件,这个条件没有构造方法,直接通过传递字符串值指定。
代码
import
java.io.IOException;
import
java.io.Reader;
import
java.util.ArrayList;
import
java.util.List;
import
org.apache.ibatis.io.Resources;
import
org.apache.ibatis.session.SqlSession;
import
org.apache.ibatis.session.SqlSessionFactory;
import
org.apache.ibatis.session.SqlSessionFactoryBuilder;
import
org.apache.log4j.pattern.ClassNamePatternConverter;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
import
cn.itcast.ssm.mapper.ItemsMapper;
import
cn.itcast.ssm.po.ItemsExample;
public
class
Student {
public
static
void main(
String
[] args) throws IOException {
/*方式一 */
ItemsExample itemsExample1 =
new
ItemsExample();
itemsExample1.
or
().andIdEqualTo(
5
).andNameIsNotNull();
itemsExample1.
or
().andPicEqualTo(
"xxx"
).andPicIsNull();
List<
Integer
> fieldValues =
new
ArrayList<
Integer
>();
fieldValues.add(
8
);
fieldValues.add(
11
);
fieldValues.add(
14
);
fieldValues.add(
22
);
itemsExample1.
or
().andIdIn(fieldValues);
itemsExample1.
or
().andIdBetween(
5
,
9
);
/* 方式二 criteria1与criteria2是or的关系 */
ItemsExample itemsExample2 =
new
ItemsExample();
ItemsExample.Criteria criteria1 = itemsExample2.createCriteria();
criteria1.andIdIsNull();
criteria1.andPriceEqualTo((float)
3
);
ItemsExample.Criteria criteria2 = itemsExample2.createCriteria();
criteria2.andNameIsNull();
criteria2.andIdGreaterThanOrEqualTo(
5
);
itemsExample2.
or
(criteria2);
//方式一和方式二是等价的
// spring获取mapper代理对象
ApplicationContext applicationContext =
new
ClassPathXmlApplicationContext(
"classpath:applicationContext.xml"
);
ItemsMapper itemsMapper = (ItemsMapper) applicationContext.getBean(
"itemsMapper"
);
itemsMapper.countByExample(itemsExample2);
// 获取SqlSessionFactory
String
resource =
"SqlMapConfig.xml"
;
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlMapper =
new
SqlSessionFactoryBuilder().build(reader);
// 获取SqlSession
SqlSession sqlSession = sqlMapper.openSession();
}
}
JavaBeans类的成员变量一般称为属性(property)。对每个属性访问权限一般定义为private或protected,而不是定义为public的。注意:属性名必须以小写字母开头。
对每个属性,一般定义两个public方法,它们分别称为访问方法(getter)和修改方法(setter),允许容器访问和修改bean的属性。
public String getColor();
public void setColor(String);
一个例外是当属性是boolean类型时,访问器方法应该定义为isXxx()形式。
对象类型
虽然可以明确的引用对象的属性名了,但如果要在if元素中测试传入的user参数,仍然要使用_parameter来引用传递进来的实际参数,因为传递进来的User对象的名字是不可考的。如果测试对象的属性,则直接引用属性名字就可以了。
测试user对象:
<
if
test
=
"_parameter != null"
>
测试user对象的属性:
<
if
test
=
"name != null"
>
map类型
传入map类型,直接通过#{keyname}就可以引用到键对应的值。使用@param注释的多个参数值也会组装成一个map数据结构,和直接传递map进来没有区别。
mapper接口:
int
updateByExample(
@Param
(
"user"
) User user,
@Param
(
"example"
) UserExample example);
sql映射:
<
update
id
=
"updateByExample"
parameterType
=
"map"
>
update tb_user
set id = #{user.id,jdbcType=INTEGER},
...
<
if
test
=
"_parameter != null"
>
<
include
refid
=
"Update_By_Example_Where_Clause"
/>
</
if
>
注意这里测试传递进来的map是否为空,仍然使用_parameter
参考文章:
http://ljhzzyx.blog.163.com/blog/static/38380312201412043525595/
http://openwares.net/database/mybatis_generator_example.html
http://openwares.net/database/mybatis_parametertype.html
- mybatis Example条件查询
- mybatis Example条件查询
- mybatis Example条件查询
- mybatis Example条件查询
- mybatis Example条件查询
- mybatis Example条件查询
- Mybatis if条件 模糊查询非利用example扩展类
- 解决Mybatis 分页插件pagehelper不支持逆向工程Example条件查询
- mybatis拼接条件查询
- MyBatis动态条件查询
- Mybatis实现条件查询
- MyBatis多条件查询
- Mybatis条件查询
- mybatis拼接查询条件
- mybatis 根据条件查询
- Mybatis 多条件查询
- mybatis动态查询条件
- MyBatis基本查询、条件查询、查询排序
- 如何实现微服务架构中的服务发现?
- volatile关键字的实现原理
- 使用android studio制作.9图
- Fragment的Adapter分析及懒加载
- 【ML--15】在R语言中使用决策树算法做多分类预测
- mybatis Example条件查询
- 计算机网络基础知识(一)
- 你不可不知道的 JavaScript 作用域和闭包
- ListView Item点击失效的原因及解决办法
- Spring Boot使用过滤器
- 带你玩转超级列表框(1-4)雪山灵狐
- Spring 之 AOP概念理解
- 微信小程序开发(十六)页面传值
- (几何题)Codeforces 430 B. Gleb And Pizza