码迷,mamicode.com
首页 > 其他好文 > 详细

Mybatis基础

时间:2015-05-08 23:25:00      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:

1.Spring对DAO技术提供了那些支持
Spring对JDBC等数据库访问技术编写DAO提供以下几个重要支持
Spring对DAO异常提供了统一处理
Spring对DAO编写提供了支持的抽象类
提高编程效率,减少JDBC编码量

2.Spring对DAO异常支持
Spring把特定某种技术的异常,如SQLException,统一装换为自己的异常类型,这些异常以DataAccessException
为父类,它们封装了原始异常对象,不会丢失原始错误信息
DataAccessException继承于RuntimeException,是非检查异常,不会因为没有处理异常而出现编译错误
异常必须处理,可以用拦截器或则界面统一处理

3.Spring对DAO编写支持
Spring为了便于一种一致的方式使用各种数据访问技术,如JDBC、和Hibernate,Spring提供了一套抽象的
DAO类。这些抽象类提供了一些方法,通过他们可以获得与数据库访问技术相关的数据源和其他配置信息。
JdbcTemplate 封装常用的JDBC方法
HibernateTemplate 封装常用Hibernate方法
JDBCDaoSupport JDBC数据访问对象的基类
HibernateDaoSupport Hibernate数据访问对象的基类

4.JdbcDaoSupport
JdbcDaoSupport是利用JDBC技术编写DAO的父类,通过该类提供的方法,便于获取Connection和JdbcTemplate
等对象信息
JdbcDaoSupport使用时需要注入一个DataSource对象
JdbcDaoSupport对代码有一定的侵入性

5.JdbcTemplate
JdbcTemplate封装了连接获取以及连接释放等工作,从而简化了我们对JDBC的使用,避免忘记关闭连接等错误
JdbcTemplate提供了一下主要方法
queryForInt()
queryForObject()
query()
update()
execute()

6.如何编写DAO组件
基于JDBC技术编写DAO组件可以采用下面两种模式
1.DAO继承JdbcDaoSupport,通过getJdbcTemplate()方法获取JdbcTemplate对象,需要在
DAO实现类中注入一个DataSource对象来完成JdbcTemplate的实例化
2.DAO不继承JdbcDaoSupport,在Spring容器中配置JdbcTemplate,然后注入给DAO实现类(更为优雅)

7.继承JdbcDaoSupport的用法-DAO配置
<bean id="myDataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="lu123456"></property>
</bean>
<!-- 继承JdbcDaoSupport -->
<bean id="jdbcEmpDao1" class="org.tarena.dao.JdbcEmpDao1">
<property name="dataSource" ref="myDataSource"></property>
</bean>

8.不继承JdbcDaoSupport的用法-DAO配置
<!-- 不继承JdbcDaoSupport -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="myDataSource"></property>
</bean>

<bean id="jdbcEmpDao2" class="org.tarena.dao.JdbcEmpDao2">
<property name="template" ref="jdbcTemplate" ></property>
</bean>

9.什么是Mybatis
Mybatis最早源自Apache基金会的一个开源项目iBatis,2010年这个项目有Apache software foundation
迁移到了google code,并且改名为Mybatis;
MyBatis支持普通的SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis封装了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
Mybatis使用简单的XML或注解做配置和定义映射关系,将Java的POJOs映射成数据库中的记录。

10.MyBatis体系结构
1,加载配置
2,SQL解析
3,SQL执行
4.结果映射

11.ResultMap映射定义
在SqlMap.xml定义<select>操作时,如果查询结果字段名和Java POJO属性不一致时,需要使用<resultMap>
元素显式指定映射关系.

12.mybatis-spring.jar简介
Spring与MyBatis整合需要引入一个MyBatis-spring.jarwen文件包,该整合包有MyBatis提供,可以从Mybatis
官网下载。
Mybatis-spring.jar提供了下面几个与整合相关的API
SqlSessionFactoryBean
为整合应用提供SqlSession对象资源
MapperFactoryBean
根据指定Mapper接口生成Bean实例
MapperScannerConfigurer
根据指定包批量扫描Mapper接口并生成实例

13.SqlSessionFactoryBean在ApplicationContext.xml中定义格式如下
<!-- 注册mybatis组件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--指定连接资源-->
<property name="dataSource" ref="dataSource" />
<!--指定映射文件-->
<property name="mapperLocations" value="classpath:com/tarena/entity/*.xml" />
</bean>

14.MapperFactoryBean在ApplicationContext.xml中定义如下
<bean id="deptMapper"
class="org.mybatis.spring.mapper.MapperFactoryBean">
<!--指定SQLSessionFactoryBean对象-->
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<--指定Mapper接口-->
<property name="mapperInterface" value="com.tarena.mapper.DeptMapper" />
</bean>

15.MapperScannerConfigurer配置
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="basePackage" value="com.tarena.mapper" />
<property name="annotaionClass"
value="com.tarena.annotaion.MybatisRepository" />
</bean>
MapperScannerConfigurer自动扫描com.tarena包下所有接口,遇到带@MybatisRepository
标记的将对应MapperFactoryBean对象注册。

16.@MybatisRepository自定义注解标记代码如下
public @interface MybatisRepository{
}

17.SqlSession Template
上述整合完成后,程序可直接使用Spring容器中的Mapper接口实例进行编程。此外mybatis-spring.jar还提供
了一个SQLSession Template组件,也可以将该组件对象注入给程序中的DAO,在DAO中利用SQLSession
Template编程。

Mybatis基础

标签:

原文地址:http://www.cnblogs.com/Crow00/p/4488995.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!