Dao 接口
/**
-
查询所有用户
-
@return
*/
List findAll();
映射配置
select * from user
修改实体类
实体类代码如下:(此时的实体类属性和数据库表的列名已经不一致了)
public class User implements Serializable {
private Integer userId;
private String userName;
private Date userBirthday;
private String userSex;
private String userAddress;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Date getUserBirthday() {
return userBirthday;
}
public void setUserBirthday(Date userBirthday) {
this.userBirthday = userBirthday;
}
public String getUserSex() {
return userSex;
}
public void setUserSex(String userSex) {
this.userSex = userSex;
}
public String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
@Override
public String toString() {
return “User [userId=” + userId + “, userName=” + userName + “, userBirthday=”
-
userBirthday + “, userSex=”
-
userSex + “, userAddress=” + userAddress + “]”;
}
}
Dao 接口
/**
-
查询所有用户
-
@return
*/
List findAll();
映射配置
select * from user
测试查询结果
@Test
public void testFindAll() {
List users = userDao.findAll();
for(User user : users) {
System.out.println(user);
}
}
输出结果:
名称会有值,是因为:mysql 在 windows 系统中不区分大小写!
修改映射配置
使用别名查询
select id as userId,username as userName,birthday as userBirthday,sex as userSex,address as userAddress from user
输出结果:
如果我们的查询很多,都使用别名的话写起来会很麻烦,有别的解决办法,继续往下面看。
========================================================================
**(1)resultMap 标签可以建立查询的列名和实体类的属性名称不一致时建立对应关系。从而实现封装。
(2)在 select 标签中使用 resultMap 属性指定引用即可。同时 resultMap 可以实现将查询结果映射为复杂类型的 pojo,比如在查询结果映射对象中包括 pojo 和 list 实现一对一查询和一对多查询。**
select * from user