1.直接把POJO传入到Mybatis,取出里面的值作为筛选条件
筛选条件:1.普通条件 2.时间区间控制 3.选择性过滤某些条件 4.排序 5.分页
简化的的POJO例子
public class Target implements Serializable {
private static final long serialVersionUID = -4733433410890544354L;
/**
* 设置id,主键
*/
private Long setup_id;
public static long getSerialVersionUID() {
return serialVersionUID;
}
public Long getSetup_id() {
return setup_id;
}
public void setSetup_id(Long setup_id) {
this.setup_id = setup_id;
}
......
}
MyBatis的Sql配置文件
数据项
<select id="queryTargetByCondition" parameterType="com.XX.XX.XX.XX.XX.TargetDTO" resultType="com.XX.XX.XX.XX.XX.Target">
SELECT
...
bts.biz_type,
bts.group_id,
ug.group_name,
bts.quantity,
bts.amount,
bts.create_user_id,
uu.user_name,
bts.create_time,
bts.modify_user_id,
bts.modify_time
FROM boss_target_setup AS bts
LEFT JOIN um_group AS ug ON bts.group_id = ug.group_id
LEFT JOIN um_user AS uu ON bts.create_user_id = uu.user_id
WHERE 1=1
<if test="agency_id != null">AND bts.agency_id = #{agency_id}</if>
<if test="cycle_value != null">AND bts.cycle_value = #{cycle_value}</if>
<if test="biz_type != null">AND bts.biz_type = #{biz_type}</if>
<if test="start_date != null">AND bts.start_date >= #{start_date} </if>
<if test="end_date != null">AND #{end_date} >= bts.end_date</if>
<if test="biz_type == 1">AND bts.quantity != 0</if>
<if test="biz_type == 2">AND bts.amount != 0</if>
<if test="pageQueryVO.orderName != null">
ORDER BY ${pageQueryVO.orderName}
</if>
<if test="pageQueryVO.pageSize > 0">
LIMIT #{pageQueryVO.currentPage},#{pageQueryVO.pageSize}
</if>
</select>
总页数
<select id="queryTargetCountByCondition" parameterType="com.finway.boss.admin.basicfunction.dto.TargetDTO" resultType="int">
SELECT COUNT(*)
FROM boss_target_setup
WHERE 1=1
<if test="agency_id != null">AND agency_id = #{agency_id}</if>
<if test="group_id != null">AND group_id = #{group_id}</if>
<if test="belong_year != null">AND belong_year = #{belong_year}</if>
</select>