本篇文章为大家展示了使用MyBatis如何实现刀开发,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
<强> 1. SqlSession使用范围强>
<强> 1.1 SqlsessionFactoryBuilder 强>
通过SqlsessionFactoryBuilder创建会话工厂SqlSessionFactory,将SqlsessionFactoryBuilder当成一个工具类使用即可,不需要使用单例管理SqlsessionFactoryBuilder。
在需要创建SqlSessionFactory时候,只需要新一次SqlsessionFactoryBuilder即可。
<强> 1.2 SqlSessionFactory 强>
通过SqlSessionFactory创建SqlSession,使用单例模式管理SqlSessionFactory(工厂一旦创建,使用一个实例)。
将来MyBatis和春天整合后,使用单例模式管理SqlSessionFactory。
<强> 1.3 SqlSession 强>
SqlSession是一个面向用户(程序员)的接口。
SqlSession提供了很多操作数据库的方法,如:selectOne(返回单个对象),selectList(返回单个或多个对象)。
SqlSession是线程不安全的,在SqlSession实现类中除了有接口中的方法(操作数据库的方法)还有数据域属性。
SqlSession最佳应用场合在方法体内,定义成局部变量使用。
<强> 2.1思路强>
程序员需要写刀接口和刀实现类。
需要向刀的实现类中注入SqlSessionFactory,在方法体内通过SqlSessionFactory创建SqlSession。
<强> 2.2刀接口强>
公共接口UserDao {//根据id查询用户信息 公共用户findUserById (int id)抛出异常;//添加用户信息 公共空间insertUser用户(用户)抛出异常;//删除用户信息 公共空间deleteUser (int id)抛出异常; }
2.3刀接口实现类
公共类UserDaoImplTest { 私人SqlSessionFactory SqlSessionFactory; @Before 公共空间设置()抛出IOException {//创建sqlSessionFactory//mybatis配置文件 字符串资源=癝qlMapConfig.xml";//得到配置文件流 InputStream InputStream=Resources.getResourceAsStream(资源);//创建会话工厂,传入mybatis的配置文件信息 sqlSessionFactory=new SqlSessionFactoryBuilder () .build (inputStream); } @Test 公共空间findUserByIdTest()抛出异常{ UserDao UserDao=new UserDaoImpl (sqlSessionFactory); 用户用户=userDao.findUserById (1); System.out.println(用户); } }
<强> 2.5总结原始刀开发问题强>
(1)刀接口实现类方法中存在大量模板方法,设想能否将这些代码提取出来,大大减轻程序员工作量。
(2)调用sqlSession方法时将声明的id硬编码了。
(3)调用sqlSession方法时传入的变量,由于sqlSession方法使用泛型,即使变量类型传入错误,在编译阶段也不报的错,不利于程序员开发。
<强> 3.1思路(mapper代理开发规范)强>
程序员需要编写mapper.xml映射文件
程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成映射器接口实现类代理对象。
<强>开发规范:强>
(1)在映射器。xml名称空间中等于映射器接口地址
(2) mapper.java接口中的方法名和mapper.xml中声明的id一致
(3) mapper.java接口中的方法输入参数类型和mapper.xml中声明的parameterType指定的类型一致。
(4) mapper.java接口中的方法返回值类型和映射器。xml中声明的resultType指定的类型一致。