1、Pojo包装对象:通过pojo传递查询条件,查询条件是综合的查询条件,不仅包含用户查询条件还包含其他的查询条件,这时就可以使用包装对象传递输入参数。
以user实体类为例,根据用户名查询用户信息,查询条件放到Pojo的user属性中。
2、User实体类:
package Model;
import java.util.Date;
/**
* 此处user表对应的封装类的字段与user表中的字段名不对应
*/
public class userCRUDModelTwo {
private Integer userId;
private String userName;
private String userAddress;
private char userSex;
private Date userBirthday;
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 String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
public char getUserSex() {
return userSex;
}
public void setUserSex(char userSex) {
this.userSex = userSex;
}
public Date getUserBirthday() {
return userBirthday;
}
public void setUserBirthday(Date userBirthday) {
this.userBirthday = userBirthday;
}
@Override
public String toString() {
return "userCRUDModelTwo{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", userAddress='" + userAddress + '\'' +
", userSex=" + userSex +
", userBirthday=" + userBirthday +
'}';
}
}
3、pojo包装类:
package Model;
/**
* 使用pojo属性值
*/
public class Pojo {
userCRUDModelTwo user;
public userCRUDModelTwo getUser() {
return user;
}
public void setUser(userCRUDModelTwo user) {
this.user = user;
}
}
4、此处使用的user实体类中的属性与user表中对应的字段命名不一致,因此需要在持久层映射文件中做字段映射配置。
user表中的字段名:
持久层映射文件配置 – 对返回值进行映射配置:
<!-- 当表对应的封装类的属性名称与表中的字段名称不一致时,使用下列封装,resultMap对查询的结果集进行封装-->
<resultMap id="result" type="Model.userCRUDModelTwo">
<!-- 主键进行封装 -->
<id property="userId" column="id"></id>
<!--非主键字段进行封装-->
<result property="userName" column="username"></result>
<result property="userSex" column="sex"></result>
<result property="userAddress" column="address"></result>
<result property="userBirthday" column="birthday"></result>
</resultMap>
5、持久层接口:
**/**
* 使用Pojo属性值
*/
List<userCRUDModelTwo> queryByVO(Pojo vo);
6、持久层映射文件:
<!--Pojo属性值:#{}\${}-->
<select id="queryByVO" parameterType="Model.Pojo" resultMap="resultMap">
select * from user where username like #{user.userName}
</select>
注意:此处返回值属性使用resultMap,resultMap的属性值使用 4 中的封装result。
7、测试类:
/**
* 使用Pojo属性值进行模糊查询
*/
@Test
public void queryByVO(){
Pojo pojo = new Pojo();
userCRUDModelTwo user = new userCRUDModelTwo();
user.setUserName("%王%");
pojo.setUser(user);
List<userCRUDModelTwo> list = iuCRUD.queryByVO(pojo);
for (userCRUDModelTwo userModel :list
) {
System.out.println(userModel);
}
}