本文共 2788 字,大约阅读时间需要 9 分钟。
(1)创建接口EmployeeMapperDynamicSQL
添加get方法:
(3)执行test方法:
查询的时候如果某些条件没带可能sql拼接会有问题。解决方法:
(1)给where后面加上1=1
(2)使用where标签来将所有的查询天剑包括在内,mybatis会将where标签中拼接sql多的and
或者or
去掉。(注:where标签只会去掉第一个多出来的and
或者or
,即需要将and
或者or
放在sql语句开头) where标签不能解决sql拼接以后后面多出的and或者or
prefix="":前缀,trim标签体中是整个字符串拼串后的结果prefix给拼串后的整个字符串加一个前缀 prefixOverrides="":前缀覆盖, 去掉整个字符串前面多余的字符 suffix="":后缀,suffix给拼串后的整个字符串加一个后缀 suffixOverrides="" : 后缀覆盖:去掉整个字符串后面多余的字符id=#{id} and last_name like #{last_name} and email=#{email} and gender=#{gender}
带了break的swtich-case:如果带了id就用id查,如果带了last_name就用last_name查;只会进入其中一个
(1)添加方法(3)运行测试方法
(1)接口中添加方法
update tbl_employee where id=#{id} last_name=#{last_name}, email=#{email}, gender=#{gender}
应用1:使用foreach批量插入
sql语句:INSERT INTO tbl_employee(last_name,email,gender,d_id) VALUES('tom','tom@qq.com','0',1), ('jcak','jack@qq.com','1',2)
配置文件(1):
INSERT INTO tbl_employee(last_name,email,gender,d_id) VALUES (#{emp.last_name},#{emp.email},#{emp.gender},#{emp.dept.id})
配置文件(2):
两个内置参数: 不只是方法传递过来的参数可以被用来判断,取值。。。 mybatis默认还有两个内置参数:
_parameter:代表整个参数 单个参数:_parameter就是这个参数 多个参数:参数会被封装为一个map;_parameter就是代表这个map _databaseId:如果配置了databaseIdProvider标签。 _databaseId就是代表当前数据库的别名oracle bind:可以将OGNL表达式的值绑定到一个变量中,方便后来引用这个变量的值
抽取可重用的sql片段。方便后面引用
1、sql抽取:经常将要查询的列名,或者插入用的列名抽取出来方便引用 2、include来引用已经抽取的sql: 3、include还可以自定义一些property,sql标签内部就能使用自定义的属性 include-property:取值的正确方式${prop}, #{不能使用这种方式}
insert into employees() select #{emp.last_name} last_name,#{emp.email} email from dual employee_id,last_name,email last_name,email,gender,d_id
转载地址:http://vvewz.baihongyu.com/