初学mybatis产生两个问题:
-
mybatis传入参数执行SQL语句好像并不是很智能?xml文件中指定parameterType只能是一种数据类型。假设我现在需要执行一条SQL语句,里面有两个参数:一个int类型,一个String类型又该怎么办?
-
如果执行SQL语句的数据表中有成千上百个字段,但是真正执行sql语句只需要针对其中两个字段进行更改操作,那么实例化一个pojo的类似乎显得有点小题大做。
其实这两个问题是同一个,就是mybatis能不能像JDBC那样自由指定参数进行执行SQL语句呢?答案是能的,parameterType 可以指定数据类型为map类型。在使用时传入一个map集合类即可。
//接口方法
int map_test(Map<String,Object> map);
//绑定接口方法
<update id="map_test" parameterType="map">
update user set pwd = #{userpwd} where id = #{userid}
</update>
@Test
public void testmap(){
SqlSession session = null;
try{
Map<String,Object> map = new HashMap<>();
session = mybatisUtil.getSqlsession(); //加载工具类
map.put("userid",1);
map.put("userpwd","111111");
UserDao mapper = session.getMapper(UserDao.class);
int i = mapper.map_test(map);
session.commit();
} catch (Exception e){
e.printStackTrace();
} finally {
session.close();
}
}
唯一需要注意的就是xml配置文件中取map的key对应的value时,字段要和传入的一样即可。当遇上大量的数据字段时而又只操作其中的几个时,使用map会简易很多。
更多推荐
mybatis传入map参数
发布评论