![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MyBatis篇
文章平均质量分 90
mybatis
zijikanwa
这个作者很懒,什么都没留下…
展开
-
MySQL的on duplicate key update实现(批量)插入或更新操作
文章目录一. 背景二. `on duplicate key update`概述三. `on duplicate key update`的使用1. 在MySQL中的使用2. 在MyBatis中的使用参考资料一. 背景背景:业务上经常有这样的需求场景,如果之前有这条数据,就做更新;如果没有,就做新增。常用的处理方案:通过主键id或者其他唯一键判断DB中是否有这条数据,再判断调用insert或update语句。这样做逻辑处理起来比较复杂,降低代码效率,而且如果并发量高,可能会存在数据问题。二. on原创 2021-09-29 15:10:27 · 21955 阅读 · 6 评论 -
SQL注入问题
文章目录一. Statement对象二. preparedStatement对象三. MyBatis是否可以防止SQL注入1. MyBatis中SQL注入的问题2. MyBatis中解决SQL注入三. 必须使用`${}`格式的情况四. 总结参考资料一. Statement对象说明:SQL注入只对SQL语句的编译过程有破坏作用代码public static void login(String username,String password){ Statement st = conn.c原创 2021-05-17 22:56:59 · 244 阅读 · 3 评论 -
MyBatis动态SQL if条件表达式 大坑
一. 问题背景近期在项目测试过程中,在使用MyBatis进行列表条件查询时,查询条件是状态为1和状态为2的都可以查到正确的结果,但查询条件是状态为0(无效)时,发现查询出来的结果包含了所有状态(0,1, 2),然后在本地跑测试看了一下sql的执行语句,发现sql根本没有拼接and status=#{status}语句。具体如下:DTO/** * 状态 0:无效 1:有效 2:全部 *...原创 2020-04-30 16:42:48 · 1838 阅读 · 0 评论 -
MyBatis中增删改操作总结
文章目录一. 总结1. MyBatis插入数据2. MyBatis更新数据3. MyBatis删除数据二. MyBatis与MySQL执行增删改操作的区别参考文献一. 总结1. MyBatis插入数据Mapper文件的SQL语句场景执行结果Dao层返回值主键是否自增浏览器访问示例insert into正常插入程序正常执行1主键自增insert i...原创 2020-04-02 10:23:32 · 229 阅读 · 0 评论 -
MyBatis使用@MapKey注解
文章目录一. 背景和含义二. 具体示例1. mapper.xml文件2. dao.java3. manager.java参考资料一. 背景和含义背景:今天使用MyBatis查询一些记录,数据涉及到两个表里的数据,需要连表查询,但我MyBatis的返回结果不想创建新的DO对象,因此使用@MapKey注解返回一个Map集合。含义:@MapKey注解用于mapper.xml文件中,一般用于查...原创 2020-03-31 15:47:07 · 4955 阅读 · 0 评论 -
MyBatis实现In查询
文章目录一. SQL语法实现In查询二. MyBatis实现In查询1. Dao层方法的参数只有一个2. Dao层方法的参数有多个2.1 使用@Param("xxx")实现2.2 使用Map实现参考资料一. SQL语法实现In查询SQL语句实现In查询SELECT * FROM user_info WHERE user_name in ('xixi','haha');二. MyB...原创 2019-11-12 14:35:56 · 22725 阅读 · 2 评论 -
MyBatis查询无数据的返回值
文章目录一. 问题二. 结论参考资料一. 问题当在Dao层查询时,如果没有数据时返回的List是null么?Emp emp = EmpDao.queryEmp(id); List<Emp> list = EmpDao.queryEmpInfo(params); 二. 结论如果Dao的返回值是实体,则mybatis查询无记录时返回null。因此,这里判空需要用"==...原创 2019-11-08 20:59:26 · 5074 阅读 · 0 评论