为什么使用动态代理:因为三层架构,界面层调用业务逻辑层的接口,要调用接口下的实现类。实现类为.xml文件,无法调用,使用动态代理可以解决
前提:将前面的Mybatis的配置配好
可以定义代码片断,可以进行逻辑判断,可以进行循环处理(批量处理),使条件判断更为简单.
1)
2)
id,
username,
birthday,
sex,
address
//引用定义好的代码片断select from users
可以对以前的代码进行优化
3)字段替代
接口里增加
//模糊用户名和地址查询
List getByNameOrAddress(
@Param("columnName") String columnName,
@Param("columnValue") String columnValue);
UserMapper里增加
4)
test条件判断的取值可以是实体类的成员变量,可以是map的key,可以是@Param注解的名称.
接口里增加
//按照指定的条件进行多条件查询
List getByCondition(Users users);
UserMapper里增加
测试类
@Test
public void testGetByCondition(){
Users users = new Users();
// users.setSex("1");
// users.setUserName("小");
// users.setAddress("南");
List list=mapper.getByCondition(users);
list.forEach(useruser -> System.out.println(useruser));
for (Users users1 : list) {
System.out.println(users1);
}
}
5)
接口里增加
//有选择的更新
int updateBySet(Users users);
UserMapper里增加
update users where id = #{id} username=#{userName}, birthday=#{birthday}, sex=#{sex}, address=#{address}
测试类
@Test
public void testUpdateSet(){
Users users = new Users();
users.setId(6);
users.setUserName("lla");
int update = mapper.updateBySet(users);
System.out.println(update);
sqlSession.commit();
}
6)
接口里增加
//查询多个指定id的用户信息
List getByIds(Integer []arr);
UserMapper里增加
测试类
@Test
public void testGetByIds(){
Integer []array={2,4,6};
List byIds = mapper.getByIds(array);
byIds.forEach(users -> System.out.println(users));
}
批量删除与批量增加
接口里增加
//批量删除
int deleteBatch(Integer []arr);
//批量增加
int insertBatch(List list);
UserMapper里增加
delete
from users
where id in
#{id}
insert into users(username, birthday, sex, address)
values
(#{u.userName},#{u.birthday},#{u.sex},#{u.address})
测试
@Test
public void testDeleteBatch(){
Integer []array={2,4};
int i = mapper.deleteBatch(array);
sqlSession.commit();
System.out.println(i);
}
@Test
public void testInsertBatch() throws ParseException {
Users u1 = new Users("aa", sf.parse("2002-02-02"), "2", "朝阳1");
Users u2 = new Users("bb", sf.parse("2002-02-02"), "2", "朝阳2");
Users u3 = new Users("cc", sf.parse("2002-02-02"), "2", "朝阳3");
Users u4 = new Users("dd", sf.parse("2002-02-02"), "2", "朝阳4");
List list=new ArrayList<>();
list.add(u1);
list.add(u2);
list.add(u3);
list.add(u4);
int i = mapper.insertBatch(list);
sqlSession.commit();
System.out.println(i);
}
还有一个批量更新在视频的95,想了解可以了解



