先看报错详情
原因:mapper文件中的入参类型parameterType与测试代码中传的格式不一致
解决:当前mapper中select节点parameterType=“Integer”,因此测试类中sqlSession调用时传参改为int就可以,sqlSession.selectOne(statement,1)
代码之前发过:http://t.csdn.cn/nX6pn
问题代码:userInfoMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jd.dao.UserInfo">
<!--查询单条数据-->
<select id="getUserById" resultType="com.jd.dao.UserInfo" parameterType="Integer">
select user_id, user_password, lev, points, user_name
from t_user
where user_id = #{user_id}
</select>
</mapper>
问题代码:
package com.jd.dao;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
public class TestUserInfo {
public static void main(String[] args) throws IOException {
getOne();
}
public static void getOne() throws IOException {
System.out.println("Start----------------");
Reader reader = Resources.getResourceAsReader("mybatisConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
// 加载sql语句
String statement = "com.jd.dao.UserInfo.getUserById";
UserInfo userInfoRes = (UserInfo)sqlSession.selectOne(statement,"1");
sqlSession.commit();
System.out.println("userInfos=======" + userInfoRes);
sqlSession.close();
}
}
最终运行: