发表于: 2016-08-26 16:33:32
3 2184
今天完成的事情:mybatis用mapper代理的方式开发的demo终于跑通了,总结一下mybatis学的这半个多月,Mybatis是一个优秀支持普通SQL查询,存储过程和高级映射的优秀的持久层框架,MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
我的demo,百度网盘地址:http://pan.baidu.com/s/1jInqfLc
一、首先,mybatis可以解决JDBC固有的一些问题
①JDBC在连接数据库的过程中需要频繁的创建和关闭,占用了很多系统资源,使用mybatis数据库连接池可以避免;
②SQL语句是硬编码到程序中的,如果要改SQL语句需要改代码,用mybatis可以在xml配置文件中使用占位符来代替具体的参数,后期不需要更改代码;
③在prepareStatement中的参数也是硬编码;
④遍历查询结果集存在硬编码;
总之,一个是耗费系统资源,另一个是硬编码较多,不利于系统维护,但jdbc也有自己的优点,应根据需求选择最适合的解决方案。
二、 mybatis的整体流程如图
①由总的配置文件:SqlMapConfig.xml配置环境、连接池、和Mapper.xml等都在此文件中配置,然后创建SqlSessionFactory会话工厂,再调用会话工厂里的openSession方法来开启SqlSession,再对SqlSession进行CRUD操作,
②Mapper.xml总主要是namespace以及Sql语句组成
③然后是Student里写表的字段,再用get、set方法提供设置参数的方法
④StudentDao或者StudentMapper里写一些CRUD的方法,如果是原始开发需要些实现类来完成对工厂、会话的创建和使用,最后手动提交和关闭,代理开发需要在StudentMapper.xml文件里的namespace里写全限定名,然后不需要写实现类,可以直接在test类里调用工厂和会话,
主要这一句可以调用sqlSession里的getMapper方法获得StudentMapper.class类来生成代理对象。
想让mybatis自动创建dao接口实现类的代理对象,必须遵循一些规则:
1、mapper.xml中namespace指定为mapper接口的全限定名;
此步骤目的:通过mapper.xml和mapper.java进行关联;
2、mapper.xml中statement的id就是mapper.java中方法名;
3、mapper.xml中statement的parameterType和mapper.java中方法输入参数类型一致;
4、mapper.xml中statement的resultType和mapper.java中方法返回值类型一致。
明天计划的事情:学习spring框架
遇到的问题:暂无
收获:对mybatis更熟悉了
评论