目录
1
2
3
4
5
6
7
比如以下代码:
上述是
标签来映射查询结果到
SysCollege
对象的示例,该代码定义了一个名为SysCollegeResult
的结果映射,用于将查询结果中的列与SysCollege
对象的属性进行映射,这样定义了结果映射之后,当执行查询语句时,MyBatis 将会根据该映射将查询结果中的列值赋给SysCollege
对象的对应属性。
使用定义好的
比如以下代码:
select major_id, major_code, major_name, major_type, major_degree, major_career from sys_major
这个就是定义好的sql代码块,可以在其它操作中直接使用,可以减少重复代码的编写,是非常方便的。
使用定义好的
大多数情况下使用在,根据条件动态生成查询条件,生成 WHERE 子句
比如以下代码:
比如:如果
majorCode
不为空,则生成and major_code = #{majorCode}
的查询条件,其它也是一样。
where和
标签有什么区别:
WHERE
关键字是静态的,需要手动编写每个查询条件,并使用连接符(例如 "AND" 或 "OR")来拼接条件。而标签是动态的,可以根据条件的存在与否来动态生成 WHERE 子句,并自动处理条件之间的连接符(比如上述代码中的and).
标签通常用于在动态 SQL 中根据条件判断是否包含某部分 SQL 片段
比如跟上述
元素的作用是根据条件动态生成 SQL 语句的部分内容
比如以下代码:
insert into sys_major
major_code,
major_name,
major_type,
major_degree,
major_career,
#{majorCode},
#{majorName},
#{majorType},
#{majorDegree},
#{majorCareer},
prefix="SET"
:指定生成的 SET 子句的前缀为 "SET"。
suffixOverrides=","
:指定如果 SET 子句的最后一个字符是逗号(,),则将其移除。
prefix="("
指定了插入语句的列名部分的前缀为左括号(
,suffix=")"
则指定了该部分的后缀为右括号)
,即(
和)
之间就是列名列表
当上述的值都不为空,生成的sql语句是:
insert into sys_major
(major_code, major_name, major_type, major_degree, major_career)
values
(#{majorCode}, #{majorName}, #{majorType}, #{majorDegree}, #{majorCareer})
在这段代码中,
useGeneratedKeys="true"
表示要从数据库中获取自动生成的主键值,keyProperty="majorId"
则指定了自动生成的主键值将赋给SysMajor
对象中的majorId
属性。如果执行插入操作成功,并且数据库返回了自动生成的主键值,MyBatis 会将该值赋给
majorId
属性,作为插入操作的返回值。因此,如果程序需要获取插入操作生成的主键值,则可以通过majorId
属性来获取。如果插入操作失败或者没有生成主键值,则majorId
属性的值不会改变。
标签,用于遍历传入的数组
比如以下代码:实现批量删除!
delete from sys_major where major_id in
#{majorId}
item="majorId"
:指定遍历过程中当前元素的别名为majorId
。
collection="array"
:指定要遍历的集合为array
,即传入的majorId
数组。
open="("
:指定循环开始时的字符为(
。
separator=","
:指定每个元素之间的分隔符为,
。
close=")"
:指定循环结束时的字符为)
。
#{majorId}
:表示当前遍历到的majorId
元素,会被替换为对应的值。
标签用于定义一个包含更新字段内容的 SQL 片段
比如以下代码:
update sys_dict_type
dict_name = #{dictName},
dict_type = #{dictType},
status = #{status},
remark = #{remark},
update_by = #{updateBy},
update_time = sysdate()
where dict_id = #{dictId}
update_time = sysdate()
表示更新update_time
字段为当前时间