åºæ¬æ¦å¿µ
WHERE id=1 OR id=10 OR id=16
å¨æ¥è¯¢æ¡ä»¶ä¸ï¼æ¥è¯¢æ¡ä»¶å®ä¹æä¸ä¸ªsqlç段ï¼éè¦ä¿®æ¹sqlç段
å¦å¾æ示
æ¡ä¾ï¼
1.å建æµè¯ç±»
@Test
public void findUserList() throws Exception{
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory();
SqlSession session = sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
UserQueryVo queryVo = new UserQueryVo();
UserCustomer customer = new UserCustomer();
queryVo.setCustomer(customer);
List<Integer> ids=new ArrayList<Integer>();
ids.add(1);
ids.add(10);
ids.add(22);
queryVo.setIds(ids);
List<UserCustomer> list = mapper.findUserList(queryVo);
for (UserCustomer userCustomer : list) {
System.out.println(userCustomer.getId()+":"+userCustomer.getUsername());
}
session.close();
}
2.å建UserQueryVo
public class UserQueryVo {
//ä¼ éå¤ä¸ªid
private List<Integer> ids;
//å¨è¿éå
è£
æ¥è¯¢æ¡ä»¶ï¼ç¨æ·æ¥è¯¢æ¡ä»¶ï¼
/*private User user;*/
private UserCustomer customer;
set get ç
}
public class UserCustomer extends User {
//å¨è¿éé¢è¿è¡æ©å±ç¨æ·ä¿¡æ¯
}
public class User implements Serializable {
private int id;
private String username;
private Date birthday;
private String sex;
private String address;
//æ·»å 订åå±æ§
private List<Orders> ordersList;
set get ç
3. UserMapper
public interface UserMapper {
//ç¨æ·ä¿¡æ¯ç»¼åæ¥è¯¢å表
public List<UserCustomer> findUserList(UserQueryVo queryVo) throws Exception;
}
4.mapper.xml
<!-- ç¨æ·ç»¼åæ¥è¯¢å表
#{customer.sex} : ååºpojoå
è£
ç±»åéé¢çæ§å«çå¼
${customer.name}ï¼ ååºpojo对象éé¢çç¨æ·å称
-->
<select id="findUserList" parameterType="UserQueryVo" resultType="UserCustomer">
select * from user <!-- user.sex=#{customer.sex} and user.username like '%${customer.username}%' -->
<where>
<!-- å¦æå¼ç¨sqlç段ä¸å¨è¿ä¸ª æ å°æ件ä¸é£ä¹åé¢å°±è¦å ä¸namespace -->
<include refid="query_sql_where"/>
</where>
<!-- å®ä¹ä¸ä¸ªsql ç段
id: æ¯sqlç段çå¯ä¸æ è¯
åºäºå表å®ä¹sqlç段 ï¼ é£ä¹è¿æ ·sqlç段éç¨æ§æé«ï¼
sqlç段éé¢ä¸è¦å
å«where
-->
<sql id="query_sql_where">
<if test="customer.sex!=null and customer.sex!=''">
and user.sex=#{customer.sex}
</if>
<if test="customer.username!=null and customer.username!=''">
and user.username like '%${customer.username}%'
</if>
<if test="ids!=null">
<!--
collection : æå®å¯¹è±¡éåéé¢çå±æ§ ids
item : éåçæ¶åæ¯æ¬¡çæçå称 user_id
open ï¼ å¼å§éåçæ¶å æ¼æ¥ä¸²AND (
close : éåç»ææ¶æ¼æ¥ä¸² )
separator ï¼ æ¯æ¬¡éåçæ¶åè¦æ¼æ¥ç串
-->
<!-- AND ( id=1 OR id=10 OR id=22 -->
<!-- <foreach collection="ids" item="user_id" open="AND ( " close=")" separator="or">
æ¯æ¬¡éåéè¦æ¼æ¥ç串
id=#{user_id}
</foreach> -->
<!-- AND id IN(1,10,22)-->
<foreach collection="ids" item="user_id" open="AND id IN( " close=")" separator=",">
<!-- æ¯æ¬¡éåéè¦æ¼æ¥ç串 -->
#{user_id}
</foreach>
</if>
</sql>