`

ibatis入门尝试2

阅读更多
List查询
之前我们都是对单个对象进行查询的,这次我们用来进行查询List。
在User.xml中添加一段select配置,通过之前的resultMap返回对象
<select id="getUserList" resultMap="GetUser">
select * from users
</select>

List list = sqlMap.queryForList("getUserList");
System.out.println(list.size());
for(int i =0;i<list.size();i++){
	User user = (User)list.get(i);
	System.out.println(user.getName()+" "+user.getEmail());
}


Map传参
通过Map传入多个参数,之前我们已经使用对象进行查询条件的传递,这次我们采用传递Map来进行查询参数的设定。
我们在创建一个select标签项
<select id= "getUserList2" resultMap="GetUser" parameterClass="java.util.Map">
select * from users where u_name=#name# and u_email=#email# 
</select>

这里的参数是java.util.Map
Map map = new HashMap();
map.put("name", "0431.la");
map.put("email", "test@9ui.com");
List list = sqlMap.queryForList("getUserList2", map);
System.out.println(list.size());

对应关系就是通过map 的key 中的value进行对应的。

Sql函数的处理
在平时我们使用sql查询的时候会使用一些内置函数以提高效率和便捷。同样在ibatis内也可以很方便的使用这些函数。
这里我们使用mysql的count函数。
<select id="getUserCount" resultClass="int">
select count(*) as count from users
</select>

int i = (Integer)sqlMap.queryForObject("getUserCount");
System.out.println(i);


当然在使用函数的时候也可以对其进行对象转化
下面就是进行简单的对象转化,其实和之前我们做过的对象转化没有什么区别。
创建一个对象
public class UserCount {
	private int count;

	public int getCount() {
		return count;
	}

	public void setCount(int count) {
		this.count = count;
	}
}

<resultMap class="com.ibatis.hello.UserCount" id="UserCount1">
<result property="count" column="count"/>
</resultMap>
<select id="getUserCount" resultMap="UserCount1">
select count(*) as count from t_user
</select>

UserCount uc = (UserCount) sqlMap.queryForObject("getUserCount");
System.out.println(uc.getCount());


动态标签 dynamic
动态标签是ibatis中较为高级和重要的标签,他可以使相关操作变的更为灵活。
当然动态标签的内容很多,下面只是指几个简单的例子。
这里dynamic标签是通过Map进行参数的传递。
<select id="getUserForDynamic" resultMap="GetUser">
	select * from users
	<dynamic prepend="where">
		<isEqual property="name" compareValue="llying">
		 u_email=#email#
		</isEqual>
	</dynamic>
</select>

Map map = new HashMap();
map.put("name", "llying");
map.put("email", "test@0431.la");
List list;
list = sqlMap.queryForList("getUserForDynamic",map);
System.out.println(list.size());

这里的意思是 如果 map 中 name的value为llying的时候
将查询 select * from users where u_email=test@0431.la
如果其中的value的值不是llying的时候,将查询全部 select * from users

当然动态标签也可以进行多条件判断 和 in 查询
这里 我们将table 中添加一个字段 u_age int类型 并添加一些值 如 11 22 2 3 5
<select id="getUserForDynamic" resultMap="GetUser">
	select * from t_user
	<dynamic prepend="where">
		<isNotEqual property="name" compareValue="llying" prepend="and">
		u_age in 
		<iterate property="ages" open="(" close=")" conjunction=",">
			#ages[]#
		</iterate>
		</isNotEqual>
		<isNotEmpty property="name" prepend="and">
			u_name=#name#
		</isNotEmpty>
	</dynamic>
</select>

int[] ages = {2,12};
Map map = new HashMap();
map.put("name", "lly");
map.put("ages", ages);
List list;
list = sqlMap.queryForList("getUserForDynamic",map);	

这里产生的查询结果是
select * from t_user where u_age in (2,12) and name = 'lly'
isNotEqual 表示不等于条件
isNotEmpty 表示不为空条件
dynamic标签还有很多很强大的内容 大家可以参见官方网站 http://ibatis.apache.org/

分享到:
评论

相关推荐

    iBatis入门

    **iBatis入门** iBatis 是一个优秀的持久层框架,它允许开发者将SQL语句直接写在配置文件中,从而避免了Java代码与数据库之间的繁杂交互。它结合了Java的灵活性和SQL的高效查询能力,使得开发更加便捷。本篇文章将...

    Ibatis实例,手把手交你入门

    【Ibatis实例,手把手教你入门】 Ibatis,一个轻量级的Java持久层框架,以其灵活、...同时,随着Ibatis 3.x版本的发布,它引入了许多新功能和改进,比如支持注解配置,你可以尝试升级到新版本,进一步提升开发效率。

    ibatis经典入门

    【标题】"ibatis经典入门"揭示了我们即将探讨的主题——如何入门并掌握iBATIS这一数据层框架。...记得,理论与实践相结合是学习的关键,阅读文档后,一定要动手尝试,这样才能真正掌握iBATIS的精髓。

    Ibatis的相关指南

    【Ibatis相关指南】 ... - 结合Spring:如果可能,尝试在Spring框架中整合Ibatis,体验其事务管理的便利性。 通过以上内容,你将能更好地理解和掌握Ibatis,从而在实际项目中更加游刃有余地进行数据访问操作。

    struts2.0入门

    9. **插件体系**:Struts2具有丰富的插件库,如Freemarker、Velocity视图技术,Hibernate、iBatis持久层框架等,可以无缝集成,扩展框架功能。 10. **Ajax支持**:Struts2提供了Ajax插件,使开发者能够轻松实现页面...

    详细的Struts2教程

    在模型层,Struts2可以无缝集成各种持久化框架,如Hibernate、iBatis等,实现数据库操作。同时,Struts2支持Ajax,通过JSON或者XML响应,实现页面的部分刷新,提升用户体验。 此外,Struts2还具有异常处理、国际化...

    一个程序员的自省(博客园)--超级推荐

    作者通过自己的F#探险之旅,整理了相关教程,帮助初学者快速入门,并对比了F#与C#的差异,强调了函数式编程的优势。 【Visual Studio插件增强开发体验】 Visual Studio的插件生态系统极大地丰富了IDE的功能,使...

    Mybatis 入门示例代码之 Association

    在这个入门示例中,我们将探讨如何使用`Association`进行复杂类型的映射,以及如何在查询结果中嵌入这些关联对象。 首先,`Association`是用来表示对象间的关联,比如在一个实体类中包含另一个实体类的属性。在这个...

    mybatis-spring-1.0.2-reference.pdf

    Spring 2.0仅支持iBATIS 2版本,当尝试将MyBatis 3的支持加入到Spring 3.0时(参见Spring Jira问题),不幸的是,由于MyBatis 3.0正式发布前Spring 3.0的开发周期已结束。为了避免基于未发布的MyBatis版本进行代码...

    mybatis第一阶段

    - **起源与发展**:MyBatis起源于Apache的一个开源项目iBatis,在2010年由Apache Software Foundation迁移到Google Code,并更名为MyBatis。2013年11月,该项目进一步迁移到GitHub上进行维护和发展。 - **定位与优势...

Global site tag (gtag.js) - Google Analytics