在sql、if、choose、where、set、trim标签中,介绍了
(1)SQL 语句
select sid,sname,sex from students where sid in (1005,1006,...)
(2)用法
注意:这里只能用 ${} 获取参数,不能用 #{} 获取参数,因为后者会在传入字符串两端加上单引号,详见→使用#{}与${}获取参数。
(1)SQL 语句
select sid,sname,sex from students where sid=1005 or sid=1006 or ...
(2)用法
注意:当传入参数为 List 时,MyBatis 会默认将 List 放入Map中,并以 list 为键,因此,foreach 标签中 collection 属性值为 list,用户也可以通过 @Param("key") 注解自定义 Map 中 key 的命名,详见→使用#{}与${}获取参数。
(1)SQL 语句
delete from students where sid in (1005,1006,...)
(2)用法
delete from students where sid in(${value})
(1)SQL 语句
delete from students where sid in (1005,1006,...)
(2)用法
delete from students where sid in
#{id}
SQL 语句:
insert into students values(1005,'孙七','男'),(1006,'周八','女'),...
insert into students values
(#{student.sid},#{student.sname},#{student.sex})
insert into students values
(#{student.sid},#{student.sname},#{student.sex})
注意:当传入参数为 Array 时,MyBatis 会默认将 Array 放入Map 中,并以 array 为键,因此,foreach 标签中 collection 属性值为 array,用户也可以通过 @Param("key") 注解自定义 Map 中 key 的命名,详见→使用#{}与${}获取参数。
SQL 语句:
update students set sex='女' where sid in (1005,1006,...)
update students set sex='女' where sid=1005 or sid=1006 or ...
(1)SQL 语句
update students set sname='孙七七' sex='女' where sid=1005;
update students set sname='周八八' sex='男' where sid=1006;
...
(2)用法
update students set sname=#{student.sname},sex=#{student.sex} where sid=#{student.sid};
注意:传入参数也可以使用 List,但是 collection 属性也要同步改为 list。
运行时,显示执行了多条 updata 语句,如下:
Preparing: update students set sname=?,sex=? where sid=?; update students set sname=?,sex=? where sid=?;
但是,MyBatis 默认一次只能执行一条 SQL 语句,因此,需要在连接数据库时将 allowMultiQueries 属性设置为 true,如下:
jdbc.properties
# K = V
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/users?characterEncoding=UTF-8&allowMultiQueries=true
jdbc.username=root
jdbc.password=0.
注意:characterEncoding 用于设置编码格式,避免插入和更新数据有中文时,数据库里会显示“?”;allowMultiQueries 属性设置为 true,表示允许一次执行多条 SQL 语句。