1:动态sql:
意义:可以定义代码片段,可以进行逻辑判断,可以进行循环或批量处理,使条件判断更为简单
1.1:定义代码片段简化代码:
1.2:多条件查询:
ListselectCondition(User user);
User user=new User();
user.setName("张");
user.setPwd("111111");
Listusers = usermapper.selectCondition(user);
for (User user1 : users) {
System.out.println(user1);
}
}
1.3:条件修改:
int updatecondition(User user);
update mybatis.user
name=#{name},
pwd=#{pwd},
where id=#{id}
User user=new User();
user.setId(2);
user.setName("李四");
int i = usermapper.updatecondition(user);
sqlSession.commit();
注意:使用
1.3:循环查询,批量删除,批量增加,批量更新:
循环查询
ListselectForEach(Integer[] integers);
Integer[] arr={2,4,6};
List users = usermapper.selectForEach(arr);
for (User user1 : users) {
System.out.println(user1);
}
collection:用来指定参数的类型,如果是List集合,则为list,如果是Map集合,则为map,如果为数组,则为array
item:每次循环遍历出来的值或对象
separator:多个值或对象之间的分隔符
open:整个循环外面的前括号
close:整个循环外面的后括号
批量删除
int deleteForeach(Integer[] integers);接口
xml文件
delete from mybatis.user
where id in
#{id}
Integer[] arr={1,2};
int i = usermapper.deleteForeach(arr);
sqlSession.commit();测试
批量增加
int insertForeach(Listlist);
insert into mybatis.user(id,name,pwd)
values
(#{u.id},#{u.name},#{u.pwd})
注意:item="u",增加的对象为u,取出成员变量的形式应该为u.name等
Listlist=new ArrayList ();
list.add(new User(1,"张三","1111111"));
list.add(new User(2,"张三","1111111"));
list.add(new User(10,"张三","1111111"));
int i = usermapper.insertForeach(list);
sqlSession.commit();
批量更新
int updateForeach(Listlist);
update mybatis.user
name=#{u.name},
pwd=#{u.pwd},
where id=#{u.id}
Listlist=new ArrayList ();
list.add(new User(1,"王五","1111111"));
list.add(new User(2,"李四","22222222"));
list.add(new User(10,"张三","3333333"));
int i = usermapper.updateForeach(list);
sqlSession.commit();
注意:需要在dabase.properties中加入&allowMultiQueries=true,即允许多行操作
指定参数位置下标查询:


入参是map:


返回值是一行的map:
Map usermap(Integer id);
Map usermap = usermapper.usermap(1);
System.out.println(usermap);
System.out.println(usermap.get("name"));
返回值是多行的map:
List
List