mybatis开发常见SQL使用手册
2019獨角獸企業重金招聘Python工程師標準>>>
一、mybatis中的foreach條件的使用;
1、在xml文件中寫法范例:
<if test="actionTypeList !=null and actionTypeList.size !=0">
??????? and a.actionType in
??????? <foreach item="item" index="index" collection="actionTypeList" open="(" separator="," close=")">
???????????? #{item}
??????? </foreach>
??? </if>
2、在dao層使用Map<String,Object> map
3、在java中使用范例:
Map<String,Object> map=new HashMap<String,Object>();
?? ??? ??? ?List<String> actionTypeList=new ArrayList<String>();
?? ??? ??? ?actionTypeList.add("1");//活動
?? ??? ??? ?map.put("actionTypeList", actionTypeList);
?? ??? ??? ?map.put("userId", userId);
二、mybatis針對大于小于等特殊符號寫法范例:
<if test="readTime != null and readTime !=''">
??????? and a.createTime <![CDATA[>=]]> #{readTime,jdbcType=BIGINT}
??? </if>
<if test="condition != null and condition =='0'.toString()">
</if>
AND IFNULL(parentId,'')!=''
三、mysql中order by的使用范例:
ORDER BY??? CONVERT(ap.joinCount,SIGNED) DESC --針對數字的排序
ORDER BY??? CONVERT(v.userName USING gbk) COLLATE gbk_chinese_ci?? --中文排序
like 寫法:
<if test="keyWord != null and keyWord !=''">and (f.docNo like '%${keyWord}%' or f.userName like '%${keyWord}%' ) </if>
四、mybatis中的if else
<choose> ?
??????? <when test="title != null and title !=''"> ?
??????????? and title = #{title} ?
??????? </when> ?
??????? <when test="content != null and content !=''"> ?
??????????? and content = #{content} ?
??????? </when> ?
??????? <otherwise> ?
??????????? and owner = "owner1" ?
??????? </otherwise> ?
??? </choose>?
?
五、批量insert寫法
List<CompanyModuleAssignee> insertList = new ArrayList<>();//批量插入
for (int i = 0; i < defaultModuleAssignees.size(); i++) {
? ? ? ? ? ? ? ? ? ? //保存執行人范圍模塊之間關聯
? ? ???????????????CompanyModuleAssignee companyModuleAssignee=new CompanyModuleAssignee();
? ? ? ? ? ? ? ? ? ? companyModuleAssignee.setCompanyModuleAssigneeId(UUIDUtils.getGUID());
? ? ? ? ? ? ? ? ? ? companyModuleAssignee.setTaskAssigneeId(taskAssigneeId);
? ? ? ? ? ? ? ? ? ? companyModuleAssignee.setModuleId(assigneeDto.getModuleId());
? ? ? ? ? ? ? ? ? ? companyModuleAssignee.setCompanyId(companyId);
? ? ? ? ? ? ? ? ? ? companyModuleAssignee.setCreateUserId(loginUserId);
? ? ? ? ? ? ? ? ? ? companyModuleAssignee.setCreateTime(DateUtils.getCurTimestamp());
? ? ? ? ? ? ? ? ? ? companyModuleAssignee.setUpdateTime(companyModuleAssignee.getCreateTime());
? ? ? ? ? ? ? ? ? ? companyModuleAssignee.setDelFlag(StringUtils.COMMON_VALUE_0);
? ? ? ? ? ? ? ? ? ? insertList.add(companyModuleAssignee);
}
companyModuleAssigneeMapper.batchInsert(insertList);
mapper 寫法:
/*** 批量新增公司模塊執行人范圍數據* @param* @return* @author ph.lin* @date 2017/2/16*/ int batchInsert(List<CompanyModuleAssignee> list);xml寫法:
<insert id="batchInsert" parameterType="java.util.List">insert into ju_gp_company_module_assignee (companyModuleAssigneeId, taskAssigneeId,companyId, moduleId, createTime,updateTime, createUserId, updateUserId,delFlag)values<foreach collection="list" item="item" index="index" separator="," >(#{item.companyModuleAssigneeId,jdbcType=VARCHAR}, #{item.taskAssigneeId,jdbcType=VARCHAR},#{item.companyId,jdbcType=VARCHAR}, #{item.moduleId,jdbcType=VARCHAR}, #{item.createTime,jdbcType=BIGINT},#{item.updateTime,jdbcType=BIGINT}, #{item.createUserId,jdbcType=VARCHAR}, #{item.updateUserId,jdbcType=VARCHAR},#{item.delFlag,jdbcType=VARCHAR})</foreach> </insert>?
long cur = DateUtils.getTheDayStartTimestamp(srvStartTime).getTime(); //服務開始時間當天0點 long afterTime = DateUtils.getTheDayEndTimestamp(srvEndTime).getTime();//服務結束時間當天24點?
SELECT YEAR
? ( FROM_UNIXTIME(create_time/1000) ) '年',
? MONTH ( FROM_UNIXTIME(create_time/1000) ) '月',
? COUNT( u_id ) '會員合計'?
FROM
? kzj_ur_user?
? WHERE sys_flag=0 AND user_status=1
GROUP BY
? YEAR ( FROM_UNIXTIME(create_time/1000) ),
? MONTH ( FROM_UNIXTIME(create_time/1000) )
轉載于:https://my.oschina.net/u/2322635/blog/382513
總結
以上是生活随笔為你收集整理的mybatis开发常见SQL使用手册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/C++各种系统开发环境搭建
- 下一篇: oracle 学习——巨人的肩膀