Mybaits属性名与数据字段名不一致
如果属性名与列名不一致,在传参时有问题,sql执行获得的结果返回时也会出现问题。
- 使用sql别名,sql执行后的返回结果自动装填到该属性中。即使属性名与数据库字段名不一致。
- 而第二种更常见的做法,使用标签
resultMap
完成属性名与数据库字段名的绑定。
使用别名完成绑定
<select id="query" resultType="user">
select
id id
,name userName
,age age
from t_user
</select>
测试一下
@Test
public void test7() throws IOException {
InputStream in = Resources.getResourceAsStream("mybatis-cfg.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession session = factory.openSession(true);
// 获取代理类
UserMapper dao = session.getMapper(UserMapper.class);
List<User> list = dao.query();
for (User user : list) {
System.out.println(user);
}
session.close();
}
打印结果粘贴
[QC] DEBUG [main] org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(159) | ==> Preparing: select id id ,name userName ,age age from t_user
[QC] DEBUG [main] org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(159) | ==> Parameters:
[QC] DEBUG [main] org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(159) | <== Total: 15
User [id=1, userName=猴子, age=18]
User [id=37, userName=cjw, age=18]
User [id=39, userName=cjw, age=18]
User [id=40, userName=cjw, age=18]
User [id=41, userName=zhangsan, age=25]
User [id=42, userName=zhangsan1, age=26]
User [id=43, userName=zhangsan2, age=27]
User [id=44, userName=uw, age=22]
User [id=45, userName=zhangsan, age=25]
User [id=46, userName=zhangsan1, age=26]
User [id=47, userName=zhangsan2, age=27]
User [id=48, userName=uw, age=22]
User [id=49, userName=zhangsan, age=25]
User [id=50, userName=zhangsan1, age=26]
User [id=51, userName=zhangsan2, age=27]
使用 resultMap 标签完成绑定
<resultMap type="user" id="baseMap">
<!-- 表结构中的column和对象中成员变量对应关系 -->
<id column="id" property="id"/>
<result column="name" property="userName"/>
<result column="age" property="age"/>
</resultMap>
<!--
resultType一般用在单表处理中
resultMap 一般使用在多表中
-->
<select id="query1" resultMap="baseMap" >
select
*
from t_user
</select>
测试一下
@Test
public void test8() throws IOException {
InputStream in = Resources.getResourceAsStream("mybatis-cfg.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession session = factory.openSession(true);
// 获取代理类
UserMapper dao = session.getMapper(UserMapper.class);
List<User> list = dao.query1();
for (User user : list) {
System.out.println(user);
}
session.close();
}
打印结果粘贴
[QC] DEBUG [main] org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(159) | ==> Preparing: select * from t_user
[QC] DEBUG [main] org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(159) | ==> Parameters:
[QC] DEBUG [main] org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(159) | <== Total: 15
User [id=1, userName=猴子, age=18]
User [id=37, userName=cjw, age=18]
User [id=39, userName=cjw, age=18]
User [id=40, userName=cjw, age=18]
User [id=41, userName=zhangsan, age=25]
User [id=42, userName=zhangsan1, age=26]
User [id=43, userName=zhangsan2, age=27]
User [id=44, userName=uw, age=22]
User [id=45, userName=zhangsan, age=25]
User [id=46, userName=zhangsan1, age=26]
User [id=47, userName=zhangsan2, age=27]
User [id=48, userName=uw, age=22]
User [id=49, userName=zhangsan, age=25]
User [id=50, userName=zhangsan1, age=26]
User [id=51, userName=zhangsan2, age=27]
项目打包 提取码:3a7q
环境:eclipse,maven
总结 :