首页 > 代码库 > MyBites的几点说明
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的几点说明
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。