国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Mybatis整合Spring

2019-11-14 14:55:11
字體:
供稿:網(wǎng)友
根據(jù)官方的說法,在ibatis3,也就是Mybatis3問世之前,SPRing3的開發(fā)工作就已經(jīng)完成了,所以Spring3中還是沒有對(duì)Mybatis3的支持。因此由Mybatis社區(qū)自己開發(fā)了一個(gè)Mybatis-Spring用來滿足Mybatis用戶整合Spring的需求。下面就將通過Mybatis-Spring來整合Mybatis跟Spring的用法做一個(gè)簡單的介紹。MapperFactoryBean       首先,我們需要從Mybatis官網(wǎng)上下載Mybatis-Spring的jar包添加到我們項(xiàng)目的類路徑下,當(dāng)然也需要添加Mybatis的相關(guān)jar包和Spring的相關(guān)jar包。我們知道在Mybatis的所有操作都是基于一個(gè)Sqlsession的,而SqlSession是由SqlSessionFactory來產(chǎn)生的,SqlSessionFactory又是由SqlSessionFactoryBuilder來生成的。但是Mybatis-Spring是基于SqlSessionFactoryBean的。在使用Mybatis-Spring的時(shí)候,我們也需要SqlSession,而且這個(gè)SqlSession是內(nèi)嵌在程序中的,一般不需要我們直接訪問。SqlSession也是由SqlSessionFactory來產(chǎn)生的,但是Mybatis-Spring給我們封裝了一個(gè)SqlSessionFactoryBean,在這個(gè)bean里面還是通過SqlSessionFactoryBuilder來建立對(duì)應(yīng)的SqlSessionFactory,進(jìn)而獲取到對(duì)應(yīng)的SqlSession。通過SqlSessionFactoryBean我們可以通過對(duì)其指定一些屬性來提供Mybatis的一些配置信息。所以接下來我們需要在Spring的applicationContext配置文件中定義一個(gè)SqlSessionFactoryBean。 xml代碼 復(fù)制代碼 收藏代碼1.<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  2.       <property name="dataSource" ref="dataSource" />  3.       <property name="mapperLocations"  4.              value="classpath:com/tiantian/ckeditor/mybatis/mappers/*Mapper.xml" />  5.       <property name="typeAliasesPackage" value="com.tiantian.ckeditor.model" />  6.</bean>          在定義SqlSessionFactoryBean的時(shí)候,dataSource屬性是必須指定的,它表示用于連接數(shù)據(jù)庫的數(shù)據(jù)源。當(dāng)然,我們也可以指定一些其他的屬性,下面簡單列舉幾個(gè):• mapperLocations:它表示我們的Mapper文件存放的位置,當(dāng)我們的Mapper文件跟對(duì)應(yīng)的Mapper接口處于同一位置的時(shí)候可以不用指定該屬性的值。•configLocation:用于指定Mybatis的配置文件位置。如果指定了該屬性,那么會(huì)以該配置文件的內(nèi)容作為配置信息構(gòu)建對(duì)應(yīng)的SqlSessionFactoryBuilder,但是后續(xù)屬性指定的內(nèi)容會(huì)覆蓋該配置文件里面指定的對(duì)應(yīng)內(nèi)容。• typeAliasesPackage:它一般對(duì)應(yīng)我們的實(shí)體類所在的包,這個(gè)時(shí)候會(huì)自動(dòng)取對(duì)應(yīng)包中不包括包名的簡單類名作為包括包名的別名。多個(gè)package之間可以用逗號(hào)或者分號(hào)等來進(jìn)行分隔。• typeAliases:數(shù)組類型,用來指定別名的。指定了這個(gè)屬性后,Mybatis會(huì)把這個(gè)類型的短名稱作為這個(gè)類型的別名,前提是該類上沒有標(biāo)注@Alias注解,否則將使用該注解對(duì)應(yīng)的值作為此種類型的別名。Xml代碼 復(fù)制代碼 收藏代碼1.<property name="typeAliases">  2.    <array>  3.        <value>com.tiantian.mybatis.model.Blog</value>  4.        <value>com.tiantian.mybatis.model.Comment</value>  5.    </array>  6.</property>   • plugins:數(shù)組類型,用來指定Mybatis的Interceptor。• typeHandlersPackage:用來指定TypeHandler所在的包,如果指定了該屬性,SqlSessionFactoryBean會(huì)自動(dòng)把該包下面的類注冊為對(duì)應(yīng)的TypeHandler。多個(gè)package之間可以用逗號(hào)或者分號(hào)等來進(jìn)行分隔。• typeHandlers:數(shù)組類型,表示TypeHandler。        接下來就是在Spring的applicationContext文件中定義我們想要的Mapper對(duì)象對(duì)應(yīng)的MapperFactoryBean了。通過MapperFactoryBean可以獲取到我們想要的Mapper對(duì)象。MapperFactoryBean實(shí)現(xiàn)了Spring的FactoryBean接口,所以MapperFactoryBean是通過FactoryBean接口中定義的getObject方法來獲取對(duì)應(yīng)的Mapper對(duì)象的。在定義一個(gè)MapperFactoryBean的時(shí)候有兩個(gè)屬性需要我們注入,一個(gè)是Mybatis-Spring用來生成實(shí)現(xiàn)了SqlSession接口的SqlSessionTemplate對(duì)象的sqlSessionFactory;另一個(gè)就是我們所要返回的對(duì)應(yīng)的Mapper接口了。       定義好相應(yīng)Mapper接口對(duì)應(yīng)的MapperFactoryBean之后,我們就可以把我們對(duì)應(yīng)的Mapper接口注入到由Spring管理的bean對(duì)象中了,比如Service bean對(duì)象。這樣當(dāng)我們需要使用到相應(yīng)的Mapper接口時(shí),MapperFactoryBean會(huì)從它的getObject方法中獲取對(duì)應(yīng)的Mapper接口,而getObject內(nèi)部還是通過我們注入的屬性調(diào)用SqlSession接口的getMapper(Mapper接口)方法來返回對(duì)應(yīng)的Mapper接口的。這樣就通過把SqlSessionFactory和相應(yīng)的Mapper接口交給Spring管理實(shí)現(xiàn)了Mybatis跟Spring的整合。Spring的applicationContext.xml配置文件: Xml代碼 復(fù)制代碼 收藏代碼1.<?xml version="1.0" encoding="UTF-8"?>  2.<beans xmlns="http://www.springframework.org/schema/beans"  3.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  4.    xmlns:mvc="http://www.springframework.org/schema/mvc"  5.    xsi:schemaLocation="http://www.springframework.org/schema/beans  6.     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  7.     http://www.springframework.org/schema/context  8.   http://www.springframework.org/schema/context/spring-context-3.0.xsd  9.     http://www.springframework.org/schema/mvc  10.     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">  11.    <context:component-scan base-package="com.tiantian.mybatis"/>  12.    <context:property-placeholder location="classpath:config/jdbc.properties"/>  13.    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  14.       destroy-method="close">  15.       <property name="driverClassName" value="${jdbc.driver}" />  16.       <property name="url" value="${jdbc.url}" />  17.       <property name="username" value="${jdbc.username}" />  18.       <property name="passWord" value="${jdbc.password}" />  19.    </bean>  20.   21.    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  22.       <property name="dataSource" ref="dataSource" />  23.       <property name="mapperLocations" value="classpath:com/tiantian/mybatis/mapper/*.xml"/>  24.       <property name="typeAliasesPackage" value="com.tiantian.mybatis.model" />  25.    </bean>  26.   27.    <bean id="blogMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">  28.       <property name="mapperInterface"  29.           value="com.tiantian.mybatis.mapper.BlogMapper" />  30.       <property name="sqlSessionFactory" ref="sqlSessionFactory" />  31.    </bean>  32.   33.</beans>   BlogMapper.xml文件: Xml代碼 復(fù)制代碼 收藏代碼1.<?xml version="1.0" encoding="UTF-8" ?>  2.<!DOCTYPE mapper  3.  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  4.  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  5.<mapper namespace="com.tiantian.mybatis.mapper.BlogMapper">  6.<!--  新增記錄  -->  7.    <insert id="insertBlog" parameterType="Blog" useGeneratedKeys="true" keyProperty="id">  8.        insert into t_blog(title,content,owner) values(#{title},#{content},#{owner})  9.    </insert>  10.<!--  查詢單條記錄  -->  11.    <select id="selectBlog" parameterType="int" resultMap="BlogResult">  12.       select * from t_blog where id = #{id}  13.    </select>  14.<!--  修改記錄  -->  15.    <update id="updateBlog" parameterType="Blog">  16.        update t_blog set title = #{title},content = #{content},owner = #{owner} where id = #{id}  17.    </update>  18.<!--  查詢所有記錄  -->  19.    <select id="selectAll" resultType="Blog">  20.        select * from t_blog  21.    </select>  22.<!--  刪除記錄  -->  23.    <delete id="deleteBlog" parameterType="int">  24.       delete from t_blog where id = #{id}  25.    </delete>  26.     27.</mapper>   

下載源碼 利用上面的方法進(jìn)行整合的時(shí)候,我們有一個(gè)Mapper就需要定義一個(gè)對(duì)應(yīng)的MapperFactoryBean,當(dāng)我們的Mapper比較少的時(shí)候,這樣做也還可以,但是當(dāng)我們的Mapper相當(dāng)多時(shí)我們再這樣定義一個(gè)個(gè)Mapper對(duì)應(yīng)的MapperFactoryBean就顯得速度比較慢了。為此Mybatis-Spring為我們提供了一個(gè)叫做MapperScannerConfigurer的類,通過這個(gè)類Mybatis-Spring會(huì)自動(dòng)為我們注冊Mapper對(duì)應(yīng)的MapperFactoryBean對(duì)象。

       如果我們需要使用MapperScannerConfigurer來幫我們自動(dòng)掃描和注冊Mapper接口的話我們需要在Spring的applicationContext配置文件中定義一個(gè)MapperScannerConfigurer對(duì)應(yīng)的bean。對(duì)于MapperScannerConfigurer而言有一個(gè)屬性是我們必須指定的,那就是basePackage。basePackage是用來指定Mapper接口文件所在的基包的,在這個(gè)基包或其所有子包下面的Mapper接口都將被搜索到。多個(gè)基包之間可以使用逗號(hào)或者分號(hào)進(jìn)行分隔。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 岳阳县| 灵宝市| 荆门市| 大名县| 大厂| 英超| 彭水| 涟源市| 萍乡市| 平陆县| 海丰县| 红桥区| 怀远县| 炉霍县| 阿克陶县| 奉新县| 镇赉县| 洞头县| 孝昌县| 广昌县| 泽普县| 云南省| 常宁市| 广昌县| 甘洛县| 铜陵市| 松滋市| 巴马| 南昌县| 蓝山县| 宝清县| 铁岭县| 新丰县| 嘉定区| 织金县| 蓝田县| 泸定县| 大冶市| 鹰潭市| 永胜县| 赤壁市|