目录
目录
一.用注解开发
(1)注解--查询操作
1.不用xml,删除UserMapper.servlet-----》在核心配置文件中删除之前注册的
2.创建接口(在接口上方添加注解@Select-----》对应不同的需求更换,这里是查询)
@Select("select * from user")
public List<User> getUser();
3.在核心配置文件中注册,操作和之前差不多,只不过换成了class
4.测试
public void getUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.getUser();
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
结果和之前的是一样的!!
当方法存在多个参数怎么办?所有的参数前面必须加上@Param(“id”)的注解,
@Select("select *from user where id=#{id}")
public User getUserById(@Param("id") int id2);
重点来了:Param里面的东西也就是id必须和Where id=#{id}同名,不然取不出数据
(2)注解--增加操作
1.创建接口
@Insert("insert into user(id,name,pwd)values(#{id},#{name},#{pwd})")
public int addUser(User user);
2.测试:
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.addUser(new User(6,"易维斌","1234566"));
sqlSession.close();
}
(3)注解--修改操作
1.创捷接口
@Update("update user set name=#{name},pwd=#{pwd} where id=#{id} ")
public int updateUser(User user);
2.测试:
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(5,"SHA","147"));
sqlSession.close();
}
(4)注解--删除操作
1.创建接口
@Delete("delete from user where id=#{tid}")
public int deleteUser(@Param("tid") int id);
2.测试:
@Test
public void deleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(6);
sqlSession.close();
}
更新:
之前说每次执行完sql语句都要sqlSession.commit来提交事务,现在优化一下
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}//自动提交事务