学习笔记——Mybatis中获取主键自增数据;获取数据库受影响行数;Mybatis中参数传递问题
2023-01-10
一、Mybatis中获取主键自增数据
要获取自增数据时,需要在映射文件中的“<insert>”中添加两个属性,例如获取自增的id
①EmployeeMapper.xml中的<mapper>标签内部
<insert id="insertEmployee" useGeneratedKeys="true" keyProperty="id"> INSERT INTO tbl_employee(last_name,email,salary) VALUES (#{lastName},#{email},#{salary}) </insert>
②之后在测试文件中的测试自增关键代码
Employee employee = new Employee(null,"pingp","pingp@163.com",50.0); //测试添加员工信息 employeeMapper.insertEmployee(employee); //查询刚刚添加员工的id System.out.println("employee.getId() = " + employee.getId());
之后进行运行,结果中出现员工编号,代码OK。
③说明:useGeneratedKeys:启用主键生成策略(返回值是true);keyProperty:设置存储属性值
二、获取数据库受影响行数
直接将接口中方法的返回值设置为int或boolean即可
(1)设置为int:表示受影响的行数
(2)设置为boolean:表示数据库中的数据是否受到影响
三、Mybatis中参数传递问题
1、单个普通参数
可以任意使用:参数数据类型、参数名称不用考虑。
即如果是单个参数时,在映射文件中,在“#{}”内部填写的参数可以是任意的字母,但一般还是建议见名知意。
2、多个普通参数
Mybatis底层封装Map结构,封装key为param1、param2...(或者是arg0、arg1、...),即在映射文件中“#{}”传递参数的写法。
3、POJO参数
Mybatis支持POJO入参,参数key是POJO中属性
在接口中声明的函数的参数是存放在“POJO”文件夹下类的对象
在映射文件中在传参数语句中,等号左边放置的是数据库中的字段,等号的右边存放的是“#{类中的属性}”
4、命名参数
在接口中声明函数使,传递的参数使用的是注解,用法如下:
/** * 功能:通过命名参数查询员工信息 * @param lastname * @param salary * @return */ public List<Employee> selectEmployeeByNamed(@Param("lastName")String lastname,@Param("salary")double salary);
在映射文件中参数可以直接使用注解中的命名值。
5、Map参数
Mybatis支持直接Map入参,map的key=参数key
四、#与$的区别
1、#与$的区别
(1)#:底层执行SQL语句的对象,使用PreparedStatement,预编译SQL,防止SQL注入隐患,相对比较安全
(2)$:底层执行SQL语句的对象使用Statement对象,使用拼接方式,未解决SQL注入安全隐患,相对不安全。
2、#与$使用场景
(1)#:sql占位符位置均可使用#
(2)$:#解决不了的参数传递问题,均可以交给$处理(如:form动态化表名)
相关文章
- InnoDB引擎为什么推荐使用自增ID作为主键?
- 数据库迁移有什么技巧?|分享强大的database迁移和同步工具
- 以小博大外小内大,Db数据库SQL优化之小数据驱动大数据
- 因势而变,因时而动,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang泛型(generic)的使用EP15
- 大道如青天,协程来通信,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang通道channel的使用EP14
- 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-模板与数据库EP02
- 兼容并蓄广纳百川,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang复合容器类型的声明和使用EP04
- MySQL里Wating for Slave workers to free pending events到底在等什么
- 搞清楚系统到底怎样支撑高并发以及架构图的绘制(面试向)
- Linux-Centos-tshark抓包小结
- 基于Docker-compose搭建Redis高可用集群-哨兵模式(Redis-Sentinel)
- Power BI 子弹图:实际与预算对比
- 如果要存 IP 地址,用什么数据类型比较好?大部人都会答错!
- 学术知识图谱完成的三重分类(CS)
- 基于无模式lsm的文档存储的柱状格式(CS)
- 后端必备:常用注解总结!
- 分库分表:入门标配
- 电商网站的大规模网页抓取指南
- 基因型数据绘制PCA图和聚类分析图
- plink计算的PCA为什么和GCTA计算的不一样?