首先,为了方便,将sqlSession的获取封装为一个工具类SqlSessionUtil
public class SqlSessionUtil {
public static SqlSession getSqlSession(){
SqlSession sqlSession = null;
try {
//获取核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//获取sqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//读取核心配置文件
SqlSessionFactory sessionFactory = sqlSessionFactoryBuilder.build(is);
//得到sqlSession对象,并设置事务自动提交
sqlSession = sessionFactory.openSession(true);
} catch (IOException e) {
e.printStackTrace();
}
return sqlSession;
}
}
在UserMapper接口中编写相应的方法,插入方法请访问我的上篇文章《初识MyBatis》
public interface UserMapper {
/**
* 添加用户
* @return
*/
int insertUser();
/**
* 删除用户
* @return
*/
int deleteUser();
/**
* 根据id查找用户
*/
User getUserById();
/**
* 查询所有用户信息
*/
List<User> getAllUser();
}
接下来,在UserMapper.xml映射文件中写相应的sql语句。
注意,查询方法较增删改略微不同,需要我们提供映射类型resultType或resultMap,这两个类型有且仅有一个,选了这一个就不能选那一个,而且不能不选!
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--映射文件里写sql语句-->
<mapper namespace="com.yuuu.mybatis.mapper.UserMapper">
<!-- int deleteUser(); -->
<delete id="deleteUser">
delete from t_user where id = 1;
</delete>
<!-- User getUserById();-->
<!--
注意:
1、查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射
关系
resultType:自动映射,用于属性名和表中字段名一致的情况(必须一致!)
resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况
-->
<select id="getUserById" resultType="com.yuuu.mybatis.user.User">
select * from t_user where id = 2;
</select>
<!-- List<User> getAllUser(); -->
<select id="getAllUser" resultType="com.yuuu.mybatis.user.User">
select * from t_user;
</select>
</mapper>
在单元测试方法中编写相关测试代码
删除
@Test
public void testDelete(){
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int deleteUser = mapper.deleteUser();
System.out.println(deleteUser);
sqlSession.close();
}
两种查询
@Test
public void testSelectById(){//根据id查找
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById();
System.out.println(user);
sqlSession.close();
}
@Test
public void testGetAllUser(){//查找所有用户
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.getAllUser();
users.forEach(System.out::println);
sqlSession.close();
}
一起学习,共同进步。
谁念西风独自凉?萧萧黄叶闭疏窗。沉思往事立残阳。
被酒莫惊春睡重,赌书消得泼茶香,当时只道是寻常。