iBATIS 如何对sql 输入参数 的映射

一、输入参数的映射:
1、parameterClass的使用
2、parameterMap的使用
3、如何用Map类型的对象作为传入参数

[b]parameterClass[/b]
  <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);


[b]parameterMap的使用[/b]
  <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);


[color=red]利用parameterMap,可以定义参数对象的属性如何映射到SQL查询语句的动态参数上,注意parameterMap中<parameter/>标签的先后顺序不能颠倒![/color]

[b]如何用Map类型的对象作为传入参数[/b]
  <!-- 
这里,可以使用全路径类名,如:
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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值