第四讲 属性名和字段名不一致的处理
2017-05-25 21:37
337 查看
一、数据库中表的设计
二、实体类
public
class
User {
[align=left] [/align]
private
int
id;
private
String
name;
private
String
password
;
[align=left] [/align]
public
int
getId() {
return
id;
[align=left] }[/align]
public
void
setId(int
id) {
this.id
=
id;
[align=left] }[/align]
public
String getName() {
return
name;
[align=left] }[/align]
public
void
setName(String name) {
this.name
=
name;
[align=left] }[/align]
public
String getPassword() {
return
password;
[align=left] }[/align]
public
void
setPassword(String
password) {
this.password
=
password;
}
[align=left] @Override[/align]
public
String toString() {
return
"User [id="
+ id
+ ", name="
+ name
+ ", password="
+ password
+
"]";
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]
三、mapper映射文件
[align=left] <!-- 查询单个用户 -->[/align]
<select
id="selectUser"
resultType="User">
[align=left] select * from user where id = #{id}[/align]
</select>
四、问题:密码没有获取到
原因:mybatis会根据查询的列名(会将列名转为小写)去进行设值(列名setter方法)。
五、解决列名和属性名不一致的办法
为列名指定别名,别名和Java实体类的属性名一致
<select
id="selectUser"
resultType="User">
select id,
Name, pwd
password from user where id = #{id}
</select>
设置结果映射类型
<select
id="selectUser"
resultMap="UserMap">
[align=left] select id, Name, pwd from user where id = #{id}[/align]
[align=left] </select>[/align]
[align=left] [/align]
<resultMap
type="User"
id="UserMap">
[align=left] <!-- id标签为主键 -->[/align]
<id
column="id"
property="id"/>
[align=left] <!-- column是数据库中表的列名,property是对应实体类的属性名 -->[/align]
<result
column="name"
property="name"/>
<result
column="pwd"
property="password"/>
</resultMap>
public
class
User {
[align=left] [/align]
private
int
id;
private
String
name;
private
String
password
;
[align=left] [/align]
public
int
getId() {
return
id;
[align=left] }[/align]
public
void
setId(int
id) {
this.id
=
id;
[align=left] }[/align]
public
String getName() {
return
name;
[align=left] }[/align]
public
void
setName(String name) {
this.name
=
name;
[align=left] }[/align]
public
String getPassword() {
return
password;
[align=left] }[/align]
public
void
setPassword(String
password) {
this.password
=
password;
}
[align=left] @Override[/align]
public
String toString() {
return
"User [id="
+ id
+ ", name="
+ name
+ ", password="
+ password
+
"]";
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]
三、mapper映射文件
[align=left] <!-- 查询单个用户 -->[/align]
<select
id="selectUser"
resultType="User">
[align=left] select * from user where id = #{id}[/align]
</select>
四、问题:密码没有获取到
原因:mybatis会根据查询的列名(会将列名转为小写)去进行设值(列名setter方法)。
五、解决列名和属性名不一致的办法
为列名指定别名,别名和Java实体类的属性名一致
<select
id="selectUser"
resultType="User">
select id,
Name, pwd
password from user where id = #{id}
</select>
这里实际上是根据实体类中的setter方法名来判断是否一致的,属性名可以随便取。如:setPassword(String password),对应的 属性名可以是sex或者其他都可以。 |
<select
id="selectUser"
resultMap="UserMap">
[align=left] select id, Name, pwd from user where id = #{id}[/align]
[align=left] </select>[/align]
[align=left] [/align]
<resultMap
type="User"
id="UserMap">
[align=left] <!-- id标签为主键 -->[/align]
<id
column="id"
property="id"/>
[align=left] <!-- column是数据库中表的列名,property是对应实体类的属性名 -->[/align]
<result
column="name"
property="name"/>
<result
column="pwd"
property="password"/>
</resultMap>
相关文章推荐
- 数据库字段名称与实体类属性不一致的处理措施
- Mybatis属性和数据库表字段不一致处理
- 表字段名和实体类属性名不一致的处理
- Gson解析之字段名和实体类属性名不一致的处理
- 处理Hibernate中Pojo对象String属性不能映射Sqlserver2005 text类型字段问题
- 使用HibernateTemplate,当返回的字段跟model不一致时的处理情况
- Newtonsoft.Json高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称
- MyBatis实现单表增删改查(CURD)--属性名与字段名不一致问题
- 使用Mybatis时实体类属性名和表中的字段名不一致导致结果无法映射到实体类的解决办法
- 研究PHP处理Mysql字段属性为UNSIGNED ZEROFILL的数据
- Mybatis解决属性名和字段名不一致
- Mybatis 当实体属性与数据库字段不一致时的解决方案
- Mysql中字段类型不一致导致索引无效的处理办法
- Mybatis解决属性名与字段名不一致
- Mybatis解决属性名与字段名不一致
- 处理Hibernate中Pojo对象String属性不能映射Sqlserver2005 text类型字段问题 .
- mybatis中类属性和数据表字段不一致的解决方法
- Mybatis解决属性名与字段名不一致
- MyBatis的一系列问题的处理(遍历Map集合和智能标签和属性和字段不一样的解决办法 和sql片段)(三)
- mybatis03--字段名和属性名不一致