SqlSession:等价于jdbc中的Connection,用于完成数据操作。
//1、读取配置文件 String resource = "configuration.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); //2、根据配置文件创建SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //3、SqlSessionFactory创建SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); 2.2 数据操作通过SqlSession获得DAO实现(Mapper)
通过DAO实现完成具体的数据操作
// 获得UserDAO的实现 // UserDAO userMapper = sqlSession.getMapper(UserDAO.class); UserDAO userDAO = sqlSession.getMapper(UserDAO.class); //根据id查询 userDAO.queryOne(1); //查询所有 userDAO.queryAll(); //根据姓名模糊查询 userDAO.queryManyByName("%zhj%"); //根据日期查询 Date date = new GregorianCalendar(2019, 11, 12).getTime(); userDAO.queryManyByDate(date);回收资源:操作最后,关闭sqlSession
sqlSession.close();//关闭sqlSession 2.3 分页操作定义分页信息类:
class Page{ private Integer pageNum; //页号 private Integer pageSize; //每页几条数据 private Integer offset; //偏移量,即从哪条查起 //offset的get方法中动态计算偏移量 public Integer getOffset() { return (pageNum-1)*pageSize; } //其他set/get }定义DAO接口:
interface User{ ... public List<User> queryUserByPage(Page page); }定义Mapper:
<!-- #{offset} 取值时实际是会调用Page类中的getOffset()方法。 --> <select parameterType="com.zhj.domain.Page" resultType="User"> select id,name,gender,create_time from t_user limit #{offset},#{pageSize} </select>测试:
UserDAO userDAO = sqlSession.getMapper(UserDAO.class); Page page = new Page(3,3);//第3页,每页3条 List<User> users = userDAO.queryUserByPage(page); 3. 增删改操作 3.1 DAO接口 public interface UserDAO { ... public Integer insertUser(User user); public Integer deleteUser(Integer id); public Integer updateUser(User user); } 3.2 映射文件 <?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"> <!-- namespace="dao接口路径"--> <mapper namespace="com.zhj.dao.UserDAO"> .... .... <!-- 添加用户 1>注意:#{方法参数对象的属性名} 2>parameterType 和 resultType中都可以使用 缺省包 3>增加时id补全两种方式 --> <insert parameterType="com.zhj.domain.User"> <selectKey resultType="int" keyProperty="id" order="AFTER"> SELECT last_insert_id() </selectKey> insert into tt2 (name,gender,create_time) values(#{name},#{gender},#{createTime}) </insert> <insert parameterType="com.zhj.domain.User"> insert into tt2 (name,gender,create_time) values(#{name},#{gender},#{createTime}) </insert> <!-- 删除用户 --> <delete parameterType="int"> delete from tt2 where id=#{id} </delete> <!-- 修改用户 --> <update parameterType="com.zhj.domain.User"> update tt2 set name=#{name},gender=#{gender},create_time=#{createTime} where id= #{id} </update> </mapper> 3.3 测试使用