本文將介紹使用MyBatis框架,編寫DAO層接口類和接口類對應的sql映射文件,使用動態sql查詢滿足條件的用戶集合。
首先,需要創建一個實體類User,供封裝數據使用;
package com.xyfer.pojo; public class User{ private String name; private int age; private String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
編寫DAO層接口類,提供一個查詢用戶集合的方法;
packge com.xyfer.dao; public interface UserDao{ //模糊查詢符合條件的用戶集合 public List<User> queryUser(User user); }
在mybatis配置文件中為DAO層接口類配置別名;
<typeAliases> <typeAlias type="com.xyfer.User" alias="user"/> </typeAliases>
編寫與UserDao接口相對應的sql映射文件,查詢數據庫中的user表,並返回滿足查詢條件的用戶集合;
<mapper namespace="com.xyfer.dao.UserDao"> <resultMap type="user" id="userMapper"> <result column="name" property="name"> <result column="age" property="age"> <result column="sex" property="sex"> </resultMap> <select id="queryUser" resultMap="userMapper"> select * from user where age >=22 and age <=66 <!--動態sql拼裝--> <!--如果sex有值,則加上該條件--> <if test="sex != '' and sex != null"> and sex =#{sex} </if> <!--如果name有值,則模糊匹配name--> <if test="name!= '' and name!= null"> and name like CONCAT('%',$(name),'%') </if> </select> </mapper>
對應的sql映射文件,使用動態sql編寫,如果sex有值,查詢sql就會動態加上sex條件進行過濾,name也一樣,其中name是進行模糊匹配。