/**
* 根據用戶信息,查詢用戶列表
* @param user
* @return
*/
List<User> findByUser(User user);
<select id="findByUser" resultType="user" parameterType="user">select * from user where 1=1<if test="username!=null and username != '' ">and username like #{username}</if><if test="address != null">and address like #{address}</if>
</select>
OGNL
表達式的寫法。<where>
標簽來簡化開發:<!-- 根據用戶信息查詢 -->
<select id="findByUser" resultType="user" parameterType="user">select * from user<where><if test="username!=null and username != '' ">and username like #{username}</if><if test="address != null">and address like #{address}</if></where>
</select>
@Test
public void testFindByUser() {User u = new User();u.setUsername("%王%");u.setAddress("%順義%");//6.執行操作List<User> users = userDao.findByUser(u);for(User user : users) {System.out.println(user);}
}
需求:
傳入多個 id 查詢用戶信息,用下邊兩個 sql 實現:
這樣我們在進行范圍查詢時,就要將一個集合中的值,作為參數動態添加進來。
這樣我們將如何進行參數的傳遞?
方法如下:
1.在 QueryVo 中加入一個 List 集合用于封裝參數
/**
*
* <p>Title: QueryVo</p>
* <p>Description: 查詢的條件</p>
*
*/
public class QueryVo implements Serializable {
private List<Integer> ids;public List<Integer> getIds() {return ids;}public void setIds(List<Integer> ids) {this.ids = ids;}
}
/**
* 根據 id 集合查詢用戶
* @param vo
* @return
*/
List<User> findInIds(QueryVo vo);
<!-- 查詢所有用戶在 id 的集合之中 -->
<select id="findInIds" resultType="user" parameterType="queryvo">select * from user<where><if test="ids != null and ids.size() > 0"><foreach collection="ids" open="id in ( " close=")" item="uid" separator=",">#{uid}</foreach></if></where>
</select>
Mybatis框架、SQL 語句:
select 字段 from user where id in (?)
<foreach>
標簽用于遍歷集合,它的屬性:
@Test
public void testFindInIds() {QueryVo vo = new QueryVo();List<Integer> ids = new ArrayList<Integer>();ids.add(41);ids.add(42);ids.add(43);ids.add(46);ids.add(57);vo.setIds(ids);
//6.執行操作List<User> users = userDao.findInIds(vo);for(User user : users) {System.out.println(user);}
}
<!-- 抽取重復的語句代碼片段 -->
<sql id="defaultSql">select * from user
</sql>
<!-- 配置查詢所有操作 -->
<select id="findAll" resultType="user"><include refid="defaultSql"></include>
</select>
<!-- 根據 id 查詢 -->
<select id="findById" resultType="UsEr" parameterType="int"><include refid="defaultSql"></include>where id = #{uid}
</select>
include refid="defaultSql"></include>
select * from user
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态