- 1
- 0
- 约1.76万字
- 约 6页
- 2021-10-19 发布于福建
- 举报
MyBatis 学习 之三动态 SQL 语句
三、动态 SQL 语句
MyBatis 学习 之 一、 MyBatis 简介与配置 MyBatis+Spring+MySql
MyBatis 学习 之 二、 SQL 语句映射文件 (1)resultMap
MyBatis 学习 之 二、 SQL 语句映射文件 (2)增删改查、参数、缓存
MyBatis 学习 之 三、动态 SQL 语句
MyBatis 学习 之 四、 MyBatis 配置文件
有些时候, sql 语句 where 条件中,需要一些安全判断,例如按某一条件查询时如果传入的
参数是空, 此时查询出的结果很可能是空的, 也许我们需要参数为空时, 是查出全部的信息。
使用 Oracle 的序列、 mysql 的函数生成 Id 。这时我们可以使用动态 sql 。
下文均采用 mysql 语法和函数(例如字符串链接函数 CONCAT )。
3.1 selectKey 标签
在 insert 语句中, 在 Oracle 经常使用序列、 在 MySQL 中使用函数来自动生成插入表的主键,
而且需要方法能返回这个生成主键。使用 myBatis 的 selectKey 标签可以实现这个效果。
下面例子,使用 mysql 数据库自定义函数 nextval(student) ,用来生成一个 key ,并把他设置
到传入的实体类中的 studentId 属性上。所以在执行完此方法后,边可以通过这个实体类获
取生成的 key 。
!-- 插 入 学 生 自 动 主 键 -- insert id=createStudentAutoKey
parameterType=liming.student.manager.data.model.StudentEntity keyProperty=studentId
selectKey keyProperty=studentId resultType=String order=BEFORE select
nextval(student) /selectKey INSERT INTO STUDENT_TBL(STUDENT_ID,
STUDENT_NAME, STUDENT_SEX, STUDENT_BIRTHDAY , STUDENT_PHOTO,
CLASS_ID, PLACE_ID) VALUES (#{studentId}, #{studentName}, #{studentSex},
#{studentBirthday}, #{studentPhoto, javaType=byte[], jdbcType=BLOB,
typeHandler=org.apache.ibatis.type.BlobTypeHandler}, #{classId}, #{placeId}) /insert
调用接口方法,和获取自动生成 key
StudentEntity entity = new StudentEntity(); entity.setStudentName( 黎 明 你 好 );
entity.setStudentSex(1); entity.setStudentBirthday(DateUtil.parse(1985-05-28));
entity.setClassId; entity.setPlaceId;
this.dynamicSqlMapper.createStudentAutoKey(entity); System.out.println( 新 增 学 生 ID: +
entity.getStudentId());
selectKey 语句属性配置细节:
属性 描述
您可能关注的文档
最近下载
- 蓝色商务工作总结汇报模板.ppt VIP
- 人机协同伦理框架.docx VIP
- 中职生职业生涯规划教案.pdf VIP
- 电力安全工作规程电力线路部分.docx VIP
- 四川省成都市青羊区2024-2025学年七年级上学期期末考试数学试卷(含答案).docx VIP
- (高清版)B-T 14699-2023 饲料 采样.pdf VIP
- 《无损检测技术》课件.pptx VIP
- TBT3246.3-2010 机车车辆及其零部件设计准则螺栓连接 第3部分:设计--电气应用.docx VIP
- 山东省烟台市蓬莱区(五四制)2024-2025学年七年级上学期期末考试道德与法治试题.pdf VIP
- 2022年7月核算员财务专业知识答题.docx VIP
原创力文档

文档评论(0)