MyBites的几点说明
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBites的几点说明相关的知识,希望对你有一定的参考价值。
在我们实际项目当中,我们数据库及表中的列名和实体类中的字段名不一定都是一致的,所以我们在使用MyBites中如何处理这个问题呢?
在MyBites中有两种解决方案来处理当前这种情况:
首先将表结构贴出来:
对应实体类贴出来:
package cn.core.domain; public class User { //用户主键 private String user_id; //用户名称 private String uname; //地址 private String addr; //年龄 private Integer age; /** * 返回 用户主键 * * @return 用户主键 */ public String getUser_id() { return user_id; } /** * 设置 用户主键 * * @param user_id * 用户主键 */ public void setUser_id(String user_id) { this.user_id = user_id; } /** * 返回 用户名称 * * @return 用户名称 */ public String getUname() { return uname; } /** * 设置 用户名称 * * @param uname * 用户名称 */ public void setUname(String uname) { this.uname = uname; } /** * 返回 地址 * * @return 地址 */ public String getAddr() { return addr; } /** * 设置 地址 * * @param addr * 地址 */ public void setAddr(String addr) { this.addr = addr; } /** * 返回 年龄 * * @return 年龄 */ public Integer getAge() { return age; } /** * 设置 年龄 * * @param age * 年龄 */ public void setAge(Integer age) { this.age = age; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "User [user_id=" + user_id + ", uname=" + uname + ", addr=" + addr + ", age=" + age + "]"; } }
一、修改sql语句:
<select id="selectUserById" parameterType="string" resultType="cn.core.domain.User"> select user_id,uname,address as addr,age from user where user_id = #{user_id} </select>
可以看到,将查询语句中的*替换成对应的列名,将不一致的列名通过起别名的方式和实体类进行对应,通过测试这种方式也确实好使,但是实际项目当中很少会用这种方式去进行字段映射,因为需要改大量的sql代码,所以推荐使用下面这种处理方式
二、使用resultMap
<!-- 声明一个resultMap id在当前空间唯一即可 --> <resultMap type="cn.core.domain.User" id="userMap"> <id column="user_id" property="user_id" /> <result column="uname" property="uname" /> <result column="address" property="addr" /> <result column="age" property="age" /> </resultMap> <!-- 查询单个对象 --> <select id="selectUserById" parameterType="string" resultMap="userMap"> select * from user where user_id = #{user_id} </select>
可以看到将resultType换成resultMap 在对应属性中指定我们手动去映射的一个resultMap,即可解决我们的问题。
注意:在我们使用parameterType和resultType的时候MyBites帮助我们定义了几种类型,最常用的就是小写的string和java.lang.String一样的效果,并且还提供了hashmap这个类型,也就是说支持在参数和返回值直接指定一个HashMap的意思,具体用法我就不贴出来了,大家可以自己摸索动手实践一下。
以上是关于MyBites的几点说明的主要内容,如果未能解决你的问题,请参考以下文章