基本用法回顧:
SQL語(yǔ)句存儲(chǔ)在XML文件或Java 注解中。一個(gè)MaBatis映射的示例(其中用到了Java接口和MyBatis注解):
package org.mybatis.example;public interface BlogMapper { @Select("select * from Blog where id = #{id}") Blog selectBlog(int id);}執(zhí)行的示例:
BlogMapper mapper = session.getMapper(BlogMapper.class);Blog blog = mapper.selectBlog(101);
SQL語(yǔ)句和映射也可以外化到一個(gè)XML文件中:
<?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"><mapper namespace="org.mybatis.example.BlogMapper"> <select id="selectBlog" parameterType="int" resultType="Blog"> select * from Blog where id = #{id} </select></mapper>也可以使用MyBatis API執(zhí)行語(yǔ)句:
Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);詳細(xì)信息可以參考MyBatis網(wǎng)站所提供的用戶手冊(cè)。
與Spring集成
MyBatis與Spring Framework集成。Spring Framework允許MyBatis參與Spring事務(wù),創(chuàng)建了MyBatis映射器和會(huì)話,并把他們注入到其他bean中。
如下是一個(gè)基本的XML配置示例:創(chuàng)建了映射器,并注入到“BlogService”bean中。
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /></bean><bean id="blogMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> <property name="mapperInterface" value="org.mybatis.example.BlogMapper" /></bean><bean id="blogService" class="org.mybatis.example.BlogServiceImpl"> <property name="blogMapper" ref="blogMapper" /></bean>
現(xiàn)在調(diào)用MyBatis只需要調(diào)用一個(gè)bean:
public class BlogServiceImpl implements BlogService { private BlogMapper blogMapper; public void setBlogMapper(BlogMapper blogMapper) { this.blogMapper = blogMapper; } public void doSomethingWithABlog(int blogId) { Blog blog = blogMapper.selectBlog(blogId); ... }}SqlSessionFactory
每 一 個(gè) MyBatis 的 應(yīng) 用 程 序 都 以 一 個(gè) SqlSessionFactory 對(duì) 象 的 實(shí) 例 為 核 心 。SqlSessionFactory本身是由SqlSessionFactoryBuilder創(chuàng)建的,一般而言,在一個(gè)應(yīng)用中,一個(gè)數(shù)據(jù)庫(kù)只會(huì)對(duì)應(yīng)一個(gè)SqlSessionFactory,所以一般我們都把SqlSessionFactory定義成單例模式,或通過(guò)Spring等進(jìn)行注入。
SqlSessionFactoryBuilder創(chuàng)建SqlSessionFactory的方法有:
這些方法主要設(shè)計(jì)到的參數(shù)有InputStream,environment,properties,其中InputStream是從配置文件中獲取的一個(gè)輸入流;environment表示在配置文件里面配置的眾多的environment中,當(dāng)前要使用的是哪一個(gè)environment,包括數(shù)據(jù)源和事務(wù),缺省則使用默認(rèn)的environment;使用properties,MyBatis則會(huì)加載對(duì)應(yīng)的屬性或文件,它們可以在配置文件中使用。
從XML中構(gòu)建SqlSessionFactory
private static SqlSessionFactory sqlSessionFactory = null; static { try { InputStream is = Resources.getResourceAsStream("config/mybatis_config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static SqlSessionFactory getSqlSessionFactory() { return sqlSessionFactory; }
下面講講配置文件的基本結(jié)構(gòu):
mybatis的配置文件一般包括如下幾個(gè)部分:
<environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> 由于MyBatis可以配置多個(gè)environment,所以可以在創(chuàng)建SqlSessionFactory的時(shí)候指定具體的環(huán)境來(lái)創(chuàng)建特定的環(huán)境下的SqlSessionFactory, 不指定則使用默認(rèn)的環(huán)境。
transactionManager
在 MyBatis 中有兩種事務(wù)管理器類型(也就是 type=”[JDBC|MANAGED]”):
JDBC 主站蜘蛛池模板: 凤山市| 巴东县| 安泽县| 通许县| 云霄县| 宁蒗| 确山县| 泸西县| 潜山县| 岳西县| 和平县| 晋州市| 正宁县| 辽源市| 新化县| 平乐县| 泰宁县| 顺平县| 临西县| 襄樊市| 阳高县| 岑巩县| 龙门县| 美姑县| 普宁市| 崇礼县| 曲松县| 龙井市| 肃宁县| 深水埗区| 东乌| 都江堰市| 雷州市| 玉环县| 南汇区| 奈曼旗| 钟山县| 渝北区| 泰宁县| 禄劝| 安泽县|