补充
1.设置自动提交
我们在前面说到过,在进行增"、“删”、"改"的时候,我们需要进行手动的提交当时是通过commit()方法实现的。
其实我们在获取sqlSession对象的时候,就可以设置自动提交,因为openSession()有一个重载的方法 openSession(boolean autoCommit),如下图:
经过上述的操作后,我们就不需要进行手动提交commit()了,但是最好还是手动提交,在下面的例子中,我也是使用的手动提交。
2.介绍一个新的注解@Param
@Param我们还是很有必要比较了解使用的,因为我们在使用注解开发的时候,其起到一个很方便的作用
我们在接口中的抽象方法的每一个基本数据类型和String参数前面加上@Param.。
我们其实就相当于给这个参数进行了重命名,被重命名的参数可以在注解中哦xxxMapper.xml中通过#{}进行获取。
使用如下:
3.关于#{}和${}的区别
我们在开发中一般是只使用#{}进行获取参数的,因为’’#{}’'是可以防止SQL注入的,相当于JDBC中的prepareStatement
一、使用注解前的说明
1.我们如果使用注解实现一些简单的sql操作,那么可以完全不使用xxxMapper.xml文件
2.使用注解前,我们需要到核心配置文件中去使用class去注册mapper,如下:
二、使用注解实现"增"、“删”、“改”、“查”
sql注解是和接口的抽象类在一起的
下面的代码是写在UserMapper中的
1.实现"增"
@Insert("insert into `user`(`id`,`name`,`passwd`) values(#{id},#{name},#{passwd})")
int addUser(User user);
2.实现"删"
@Delete("delete from `user` where `id`=#{uid}")
int delUser(@Param("uid") int id);
3.实现"改"
@Update("update `user` set `name`=#{name},`passwd`=#{passwd} where `id`=#{id}")
int updateUser(User user);
4.实现"查"
@Select("select * from `user`")
List<User> selUsers();
@Select("select * from `user` where `id`=#{id}")
User getUserById(Map<String, Integer> map);
三、测试
1.测试"增"
@Test
public void addUser(User user){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.addUser(new User(7,"第七","123456"));
sqlSession.commit();
sqlSession.close();
}
结果:
2.测试"删"
@Test
public void delUser(int id){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.delUser(1);
sqlSession.commit();
sqlSession.close();
}
结果:
3.测试"改"
@Test
public void updateUser(User user){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(7,"老七","777777"));
sqlSession.commit();
sqlSession.close();
}
结果:
4.测试"查"
@Test
public void selUsers() {
//获取sqlSession
SqlSession sqlSession = MybatisUtil.getSqlSession();
//获取mapper
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调用方法
List<User> userList = mapper.selUsers();
//打印结果
for (User user : userList) {
System.out.print(user.getId() + "\t");
System.out.print(user.getName() + "\t");
System.out.println(user.getPasswd());
}
//关闭资源
sqlSession.close();
}
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("id",3);
User user = mapper.getUserById(map);
System.out.println(user);
sqlSession.close();
}
结果: