Mybatis基本使用——CRUD,参数,配置标签
Mybatis的单表crud操作
首先将读取配置文件以及生成代理对象的步骤统筹在一起,避免后续重复使用时代码量无意义的增多。
新声明一个init()函数:
private InputStream in;
private SqlSession sqlSession;
private UserDao userDao;
public void init()throws Exception{
//1.读取配置文件
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3.使用工厂生产SqlSession对象
sqlSession = factory.openSession();
//4.使用SqlSession创建Dao接口的代理对象
userDao = sqlSession.getMapper(UserDao.class);
}
然后将使用完成之后,提交事务操作与释放资源操作,统筹在destory()函数中。
public void destory()throws Exception{
//提交事务
sqlSession.commit();
//6.释放资源
sqlSession.close();
in.close();
}
针对这两个方法,可在方法前添加@Before和@After注解,使其分别在测试方法的前后执行。
crud系列操作:
UserDao.java
public interface UserDao {
/**
* 查询所有操作
* @return
*/
List<User> findAll();
/**
* 保存用户
* @param user
*/
void saveUser(User user);
/**
* 更新用户
* @param user
*/
void updateUser(User user);
/**
* 根据id删除用户
* @param userId
*/
void deleteUser(Integer userId);
/**
* 根据Id查询用户
* @param userId
* @return
*/
User findById(Integer userId);
/**
* 根据名称模糊查询
* @param username
* @return
*/
List<User> findByName(String username);
/**
* 查询总用户数
* @return
*/
int findTotal();
}
与UserDao.java对应的映射配置文件UserDao.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--有了执行的sql语句,就可以获取preparedStatement,以及封装的实体类 -->
<mapper namespace="org.example.dao.UserDao">
<!-- 配置查询所有 -->
<!-- dao中的方法名称 resultType指明结果封装到哪个实体类中-->
<select id="findAll" resultType="org.example.domain.User">
select * from user
</select>
<