Mybatis Map<>接收参数导致类型转换错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis Map<>接收参数导致类型转换错误相关的知识,希望对你有一定的参考价值。
参考技术A 如果用 Map<String,String> 接返回值,会报 Long 转 String 的类型错误原因是 COUNT 返回的 Number 类型会和 Java 的 Long 类型进行匹配
当 Mapper 层用 Map<String,String> 接数据时,仍然返回 Map<String,Long> 只是明面上是 Map<String,String>
修改方法
用 Object 去接,或者转换 COUNT 的返回结果, CONVERT(COUNT(task_uuid),CHAR)
PS:
该错误在编辑时不会报错,但是在运行时会报错
Mybatis中的map
假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应当使用Map!
User addUser(Map<String,Object> map);
<!--对象的属性,可以直接取出来
传递map的key
-->
<insert id="addUser" parameterType="map">
insert into mybatis.user(id,name,pwd) values (#{userId},#{userName},#{password});
</insert>
测试
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
Map<String,Object> map = new HashMap<String,Object>();
map.put("userId",5);
map.put("password","123789");
mapper.addUser(map);
sqlSession.close();
}
map传递参数,直接在sql中取出map中的key即可!
对象传递参数,直接在sql中取对象的属性即可!
只有一个基本类型参数的情况下,可以直接在sql中取到!
List<User> getUserLike(String value);
<select id="getUserLike" resultType="com.jialidun.pojo.User">
select * from mybatis.user where name like "%" #{value} "%"
/select>
@Test
public void getUserLike(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> userList = mapper.getUserLike("孙");
for(User user:userList){
System.out.println(user);
}
sqlSession.close();
}
以上是关于Mybatis Map<>接收参数导致类型转换错误的主要内容,如果未能解决你的问题,请参考以下文章