resultMap>
指定实体类和表中的字段对应关系,但是如果我们在查询的时候使用了别名,或者属性字段和表的字段不一致,那么我们就需要用<resultMap>
指定对应关系了public class User implements Serializable {
private static final long serialVersionUID = 6716332190979093860L;
private Integer id;
private String username;
private String password;
private Integer age;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password="
+ password + ", age=" + age + "]";
}
}
User
实体类一致create table user(id int primary key auto_increment,username varchar(20),age int ,password varchar(20));
resultType
指定结果类型)UserMapper.xml
中配置<select>即可
resultType
指定返回的结果类型 <!--
User findUserById(Integer id);
resultType: 指定返回的结果类型
-->
<select id="findUserById" resultType="cn.tedu.spring.entity.User">
select username,password,age,id from user where id=#{id}
</select>
User
实体类中的属性字段一致,因此只需要指定resultType
即可对应。但是如果我们查询的语句如下: <!--
User findUserById(Integer id);
resultType: 指定返回的结果类型
-->
<select id="findUserById" resultType="cn.tedu.spring.entity.User">
select username name,password pw,age,id from user where id=#{id}
</select>
User
类中的username
,password
值为null
,因为没有对应上,这里使用了别名
resultMap
解决别名或者字段不对应的问题<resultMap>
来设置对应关系<resultMap>
来设置对应关系<!-- 指定resultMap
type: 指定java类的全名
id: 唯一标识
-->
<resultMap type="cn.tedu.spring.entity.User" id="UserMap">
<!-- id指定主键的对应关系,这里主键没有使用别名,因此不需要指定对应关系,可以自动对应上
<id column="id" property="id"/> -->
<!-- result : 指定主键之外的属性
column: 查询结果中的字段
property:java类中的对应属性
-->
<result column="name" property="username"/>
<result column="pw" property="password"/>
</resultMap>
<!--
User findUserById(Integer id);
resultMap: 指定返回的结果类型为前面定义的resultMap
-->
<select id="findUserById" resultMap="UserMap">
select username name,password pw,age,id from user where id=#{id}
</select>
@Test
public void testFinduserById() {
//加载Spring的配置文件
AbstractApplicationContext ac
= new ClassPathXmlApplicationContext(
"spring-mvc.xml",
"spring-dao.xml");
//获取UserMapper的bean,这个是spring通过扫描mapper.xml文件自动为mybatis自动创建的,首字母小写
UserMapper userMapper
= ac.getBean(
"userMapper", UserMapper.class);
User user=userMapper.findUserById(3);
System.out.println(user);
ac.close();
}
<resultMap>
来解决多表之间的查询resultMap
,而是能够自动的对应上resultMap
来设置对应关系了原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。