parameterClass的使用
<insert id="insertUser" parameterClass="User">
insert into t_user values (
null,#username#,#password#
)
<selectKey resultClass="int" keyProperty="id">
SELECT @@IDENTITY AS ID
</selectKey>
</insert>
<insert id="insertUser2">
insert into t_user values (
null,#username#,#password#
)
<selectKey resultClass="int" keyProperty="id">
SELECT @@IDENTITY AS ID
</selectKey>
</insert>
insertUser使用了parameterClass,所以必需传入User类型的对象
User user = new User();
user.setUsername("张三");
user.setPassword("张三密码");
//传递进去的对象,必须是User类型
Object obj = sqlMapper.insert("insertUser", user);
insertUser2没有使用parameterClass,所以可以传入任意具有相应属性值的对象
JustAnObject anobj = new JustAnObject();
anobj.setUsername("用户名");
anobj.setPassword("用户密码");
//如果没有指定parameterClass属性,则任何一个具有相应属性值
//的对象都可以被传递进去
Object obj = sqlMapper.insert("insertUser2", anobj);
parameterMap的使用
<parameterMap class="User" id="insertUser-param">
<parameter property="username"/>
<parameter property="password"/>
</parameterMap>
<insert id="insertUser" parameterMap="insertUser-param">
insert into t_user values (
null,?,?
)
<selectKey resultClass="int" keyProperty="id">
SELECT @@IDENTITY AS ID
</selectKey>
</insert>
parameterMap用于传入参数,以便匹配SQL语句中的?号
User user = new User();
user.setUsername("张三dd");
user.setPassword("张三密码dd");
Object obj = sqlMapper.insert("insertUser", user)
;
利用parameterMap,可以定义参数对象的属性如何映射到SQL查询语句的动态参数上,注意parameterMap中<parameter/>标签的先后顺序不能颠倒!
如何将查询结果映射到不同的对象?(resultClass的使用)
例如:我想把从数据库中查询出来的obj1对象的属性值赋值给obj2中对象的属性上,就可以使用这个方法(注意sql语句中查询多个属性时候的分号分隔符)
<select id="selectUserForOtherObject" resultClass="com.bjsxt.ibatis.OtherObject" parameterClass="int">
select
username as prop1,
password as prop2
from t_user where id=#value#
</select>
//查找t_user表,将其结果映射到一个属性名不同的对象中!
OtherObject obj = (OtherObject)sqlMapper.queryForObject("selectUserForOtherObject", 1);
System.out.println(obj.getProp1()+","+obj.getProp2());
如何将查询结果集映射到不同的对象?(resultMap的基本使用,与上面的额方式作用是一样的,只是不是一个写法)
<resultMap class="com.bjsxt.ibatis.OtherObject" id="ooResult">
<result property="prop1" column="username"/>
<result property="prop2" column="password"/>
</resultMap>
<!--
如果使用resultMap来定义如何映射,则如下语句不可写成:
select username as prop1,password as prop2 ....
-->
<select id="selectUserForOtherObject2" parameterClass="int" resultMap="ooResult">
select
username,
password
from t_user where id=#value#
</select>
//查找t_user表,将其结果映射到一个属性名不同的对象中!
OtherObject obj = (OtherObject)sqlMapper.queryForObject("selectUserForOtherObject2", 17);
System.out.println(obj.getProp1()+","+obj.getProp2());
如何将查询结果集映射为xml格式的数据?
<select id="selectXmlData" resultClass="xml" xmlResultName="User" parameterClass="int">
<!--将一段xml字符串作为输入参数设置到下面的sql语句中,需要注意的是:标签名称必须和下面sql语句中的名称一样,顺序不要颠倒 -->
<insert id="insertUser" parameterClass="xml">
insert into t_user values (null,#name#,#pass#)
</insert>
select * from t_user where id=#value#
</select>
<select id="selectXmlDatas" resultClass="xml" xmlResultName="User">
select * from t_user
</select>
//查找t_user表,将其结果映射到xml!
//返回值是xml形式的字符串
Object obj = (Object)sqlMapper.queryForObject("selectXmlData", 1);
System.out.println(obj);
//查找t_user表,将其结果映射到xml!List中的每一个元素都会生成一个单独的xml文件
List list = (List)sqlMapper.queryForList("selectXmlDatas");
System.out.println(list);
//将xml字符串作为参数传递给sql语句进行占位符的赋值
String xml = "<?xml version=\"1.0\" encoding=\"GBK\"?><root><name>张三</name><pass>zhangsan</pass></root>";
sqlMapper.insert("insertUser",xml);
如何用Map类型的对象作为传入参数?这个跟parameterMap的使用差不多,那个是在sql语句中用的是问号而且要映射到一个parameterMap标签上给占位符赋值 这里用的是#,直接在sql语句中进行表述
<!--
这里,可以使用全路径类名,如:
java.util.Map
java.util.HashMap
java.util.TreeMap
或
map
-->
<insert id="insertUser" parameterClass="map">
insert into t_user values (
null,#username#,#password#
)
</insert>
Map user = new TreeMap();
user.put("username", "Map用户");
user.put("password", "Map用户密码");
sqlMapper.insert("insertUser",user);
<!--
resultClass可以定义为java.util.HashMap类型,
将能自动转换,这个地方不能写map或者写一个接口Map,必须写上具体的类型才可以
-->
<select id="selectMapUsers" resultClass="java.util.HashMap">
select * from t_user
</select>
List list = (List)sqlMapper.queryForList("selectMapUsers");
System.out.println(list);
for (Iterator iter = list.iterator(); iter.hasNext();) {
Map map = (Map) iter.next();
//可在此输出map的数据
}
分享到:
相关推荐
ibatis框架简单应用
Ibatis增删改简单应用配置示例说明实例 oracle 11g + ibatis2
iBATIS动态标签 §标签 §二元标签 §一元标签 §标签 § 共同的属性 prepend,open,close 标签 §标签 §属性 prepend,open,close 二元条件标签
Ibatis增删改简单应用配置示例说明,及项目 第一次写文档,请大家多包涵
ibatis api,ibatis文档,ibatis说明文档
ibatis实例,ibatis实例,mysql应用举例,大家快来看。
自己整理的非常好用 好东西向大家分享 └ ^o^ ┘
基于SQLserver 数据库的IBatis中存储过程应用实例
Ibatis应用实例.docx,非常非常值得推荐下载
ibatis官方中文文档.rar包含ibatis官方中文文档及使用说明
ibatis学习 ibatis总结 ibatis ibatis ibatis
ibatis简易使用ibatis简易使用ibatis简易使用
iBATIS 级联iBATIS 级联iBATIS 级联
1,建立应用程序 2,在项目中增加对IBatisNet.Common、IBatisNet.DataAccess、IBatisNet.DataMapper的引用; 3,建立pojo类 4,配置ibatis对应pojo的sqlmap文件 5,把providers.config复制到debug目录下,不用做任何...
ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料
ibatis2.0中文API ibatis2.0中文API ibatis2.0中文API 一对多 多对一详解,属性设置详解,解决方案详解,ibatis2.0核心API
学会ibatis 中sqlMap配置
ibatis的配置文件和映射文件,以及ibatis的应用
NULL 博文链接:https://yzz9i.iteye.com/blog/948430
NULL 博文链接:https://duqiangcise.iteye.com/blog/286764