首页
技术知识库
Task工作计划
网站简介
DON框架
后台管理
文章分类
JAVA
框架知识
操作系统
容器相关
数据库层
优化技术
界面编程
网络编程
开发工具
GO语言
其他
读书随笔
观影随笔
每日随笔
APP
mybatis与spring3.1整合[Spring]
所属分类
:[框架知识] |
创建时间
:2013-01-13 |
文章属性
:转载 |
文章来源
: |
作者
:windfly
<p> 因spring3发布时mybatis还没有出正式版本,所以spring没有整合最新的mybatis.不过社区倒是开发了一个中间件。 </p> <p>   </p> <p> <strong>需要的jar包</strong> </p> <p> mybatis-3.0.6.jar </p> <p> mybatis-spring-1.0.2.jar </p> <p>   </p> <p> <strong>要点:</strong> </p> <p> 1.在spring中配置mybatis工厂类 </p> <p> 2.在dao层使用spring注入的的工具bean对数据进行操作 </p> <p> 整合时,可以有四种方式来使用mybatis进行数据处理。 </p> <p>   </p> <p> <strong>spring</strong> <strong>中必须的配置。</strong> </p> <p> spring的配置文件中加入以下内容 </p> <p>   </p> <pre class="xml" name="code"><!-- MyBatis配置 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="c3p0DataSource" /> <property name="configLocation" value="/WEB-INF/config/db/MyBatisConfiguration.xml" /> <property name="mapperLocations" value="/WEB-INF/config/db/*Mapper.xml" /> <property name="typeAliasesPackage" value="${mybatis.alias.basepackage}" /> </bean></pre> <p>   </p> <p> 1.SqlSessionFactoryBean (必需) </p> <p>    就是中间件所需的处理类 </p> <p>   </p> <p> 2.dataSource  (必需) </p> <p>    spring中数据源引用 </p> <p>   </p> <p> 3.configLocation  (可选) </p> <p>    Mybatis自身的配置文件,一般用来声明别名 </p> <p>   </p> <p> 4.mapperLocation  (可选) </p> <p>    mybatis的映射文件 </p> <p>   </p> <p> 5.typeAliasesPackage (可选) </p> <p>    要映射类的包路径,如果使用了这种方式,则configLocation中不必再进行声明 </p> <p>   </p> <p>   </p> <p>   </p> <p> <strong>使用mybatis进行数据处理的四种方式(SqlSessionTemplate/SqlSessionDaoSupport/MapperFactoryBean/MapperScannerConfigurer)</strong> </p> <p> 不同方式的特点 </p> <ol> <li> SqlSessionTemplate  这个需要写配置文件,在实现类中注入sqlsession,再使用sqlsession,是细颗粒控制 </li> <li> SqlSessionDaoSupport   这个只需要在实现类中继承特殊类就可以使用sqlsession </li> <li> MapperFactoryBean  这个要写配置文件,把对应的所有接口在配置文件中引用即可,无需写实现类 </li> <li> MapperScannerConfigurer  这个要写配置文件,只要给出接口所在的包即可,会自动把包中的接口引入,无需写实现类 </li> </ol> <ul> <li> <strong>SqlSessionTemplate</strong> </li> </ul> <ol> <li> 配置文件加入新配<br> <pre class="java" name="code"><bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> <constructor-arg index="1" value="BATCH" /><!--- 如果想要进行批量操作可加入这个属性 -> </bean></pre>  <br> </li> <li> 注入sqlsession()<br> <pre class="java" name="code">@Reasource //使用spring3的注解注入 private SqlSession sqlSession;</pre>  <br> </li> <li> 使用sqlsession来进行操作<br> <pre class="java" name="code">public User getUser(String userId) { return (User) sqlSession.selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId); }</pre> </li> </ol> <ul> <li> <strong>SqlSessionDaoSupport(sqlSessionFactory会被spring自动装配,不需要手动注入)</strong> </li> </ul> <ol> <li> 继承SqlSessionDaoSupport类<br> <pre class="java" name="code">public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao { }</pre>  <br> </li> <li> 使用getSqlSession()方法取sqlSession来进行数据处理<br> <pre class="java" name="code">public User getUser(String userId) { return (User) getSqlSession().selectOne("org.mybatis.spring.sample.mapper.UserMapper.getUser", userId); }</pre>   </li> </ol> <ul> <li> <strong>MapperFactoryBean</strong> </li> </ul> <ol> <li> 写配置文件,引入每个DAO接口<br> <pre class="xml" name="code"><bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean></pre>   </li> <li> 在业务层可直接注入dao的接口进行操作 </li> </ol> <ul> <li> <strong>MapperScannerConfigurer</strong> </li> </ul> <ol> <li> 写配置文件,配置包名将自动引入包中的所有接口<br> <pre class="xml" name="code"><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="org.mybatis.spring.sample.mapper" /> </bean></pre>   </li> <li> 在业务层可直接注入DAO接口操作,注入时使用的是接口名,其首字母小写 </li> <li> 注意:如果有别的实现类,其提供的名称如果是接口名,且首字母小写,则会在启动时出现冲突错误 </li> </ol>
返回