注解实现CRUD
设置自动提交事务
public static SqlSession getSqlSession() {
//autoCommit=true 自动提交
SqlSession sqlSession = sqlSessionFactory.openSession(true);
return sqlSession;
}
<!--绑定接口-->
<mappers>
<mapper class="com.dao.UserMapper"/>
</mappers>
1)增加
//插入一个用户
//values(#{id},#{name},#{password})
//values后面的字段需要和实体类属性相同才可以插入进去
@Insert("insert into user(id,name,pwd) values(#{id},#{name},#{password})")
int addUser(User user);
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User(12,"代言","123");
int i = mapper.addUser(user);
if (i>0){
System.out.println("插入成功");
}
System.out.println(i);
sqlSession.close();
}
2)删除
//删除用户
@Delete("delete from user where id=#{id}")
int deleteUser(@Param("id") int id);
@Test
public void deleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i = mapper.deleteUser(6);
if (i>0){
System.out.println("删除成功");
}
System.out.println(i);
sqlSession.close();
}
}
3)修改
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Could not find value method on SQL annotation. Cause: org.apache.ibatis.builder.BuilderException: Parsing error was found in mapping #{}. Check syntax #{property|(expression), var1=value1, var2=value2, ...}
错误:
@Update("update user set name=#{} and pwd=#{} where id=#{}")
改正:
@Update("update user set name=#{name},pwd=#{password} where id=#{id}")
//修改用户
@Update("update user set name=#{name},pwd=#{password} where id=#{id}")
int updateUser(User user);
@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User(3,"程昱","666");
int i = mapper.updateUser(user);
if (i>0){
System.out.println("更新成功");
}
System.out.println(i);
sqlSession.close();
}
4查询
//根据id查询用户
@Select("select * from user where id = #{id}")
//方法存在多个参数时,参数前面必须加上@Param("id")注解
User getUserById(int id);
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userById = mapper.getUserById(6);
System.out.println(userById);
sqlSession.close();
}