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使用手册相关推荐

  1. PL/SQL开发常见SQL知识

    to_char to_date to_number 未完待续.

  2. 提升开发效率的一款mybatis开发神器

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 本篇同步更新地址; https://me.csdn.net/Dan ...

  3. 提升开发效率的一款 mybatis 开发神器

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 ...

  4. mybatis注解开发动态sql

    mybatis注解开发动态sql 本篇来讲一下如何使用mybatis注解模式中的动态sql 先来讲一下什么是动态sql 在我们实际开发的时候可能会出现很多方法需要一条很相似的sql语句来进行增删改查, ...

  5. Mybatis 注解开发 + 动态SQL

    Hello 大家好我是橙子同学,今天分享注解Mybatis注解开发+动态sql 目录 每文一铺垫(今天有小插曲哦) 注解开发 添加 @Insert 删除 @Delete 查询 @Select 修改 @ ...

  6. MyBatis 框架下 SQL 注入攻击的 3 种方式,真是防不胜防!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 本文授权转载请注明来自FreeBuf.COM 链接:https:/ ...

  7. mybatis能否预防SQL注入

    1.概念:什么是sql注入 SQL注入:是一种代码注入技术,用于攻击数据驱动的应用,恶意的SQL语句被插入到执行的实体字段中. 它一种常见的攻击方式.攻击者在界面的表单信息或者URL上输入一些特殊的S ...

  8. 8种常见SQL错误用法

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 来源:https://dwz.cn/cgAPOWPx 1.LIMIT 语句 分页查询是最常用的 ...

  9. Mybatis打印调试sql的两种方式

    问题描述 在使用mybatis进行开发的时候,由于可以动态拼接sql,这样大大方便了我们.但是也有一定的问题,当我们动态sql拼接的块很多的时候,我们要想从*mapper.xml中直接找出完整的sql ...

最新文章

  1. linux 工具src,10个被称为Sysadmin的Linux工具
  2. 20. PWT、PCD(填坑篇)
  3. 知名K12公司资深运营谢涵博:线上教育产业瓶颈该如何突破?
  4. vnpy官网说明文档网址
  5. ubuntu 无法进入startx_Ubuntu无法进入图形化界面(报错/dev/sda1:clean的解决)
  6. 【组合数学】第一类,第二类斯特林数(Stirling),Bell数
  7. 程序员找工作时,大公司 VS 小公司,应该如何做出正确的选择?
  8. Cocos2d-x场景(Scene)详解
  9. MATLAB 距离函数及用法
  10. 数据可视化——tableau 数据报表样例(报表模板)二
  11. LNMP一键安装的卸载
  12. VMware Workstation 启动报错
  13. 示波器的阻抗1M欧和50欧、探头
  14. c语言中万年历公历农历转换,公历农历转换,教你切换阳历和阴历生日
  15. jquery中addClass()和removeClass()方法
  16. 亚麻/苹果/脸书/谷歌/微软面试图鉴
  17. Git 详细安装教程(最新保姆级)
  18. Android多点触控之——MotionEvent(触控事件)
  19. 7.node.js的Buffer(缓冲区)的合并(concat)、比较(compare)、拷贝(copy)和裁剪(slice)以及如何转化为JSON对象
  20. 果园篱笆c语言算法,天然篱笆墙:果园栽种这几种树

热门文章

  1. Oracle统计信息的导出、导入
  2. java.util.concurrent 编程范例
  3. 小TIPS:合拼gridview的header
  4. BZOJ-2298|区间dp|线段树
  5. ubuntu 配置minicom 进行串口开发
  6. 工业4.0的小小思考
  7. python 菜鸟入门
  8. BZOJ-1024 生日快乐 DFS+一丝sb的数学思考
  9. 《那些年啊,那些事——一个程序员的奋斗史》——61
  10. vue脚手架引入swiper