久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    MyBatis+Spring輕量級整合(Maven)

     CevenCheng 2012-02-01

    Mybatis:
         前身是ibatis,但由于種種原因,去年五月時改名為Mybatis,絕大多數API與機制沒有變化,只是少數配置文件變動了。但是官網上有一個自動轉換的工具,可以方便的將Ibatis系統轉換為Mybatis.
    Spring:
         采用3.x,這是因為Mybatis和Spring3.x有一個較好的結合體驗,Maven庫上有一個Mybatis-Spring結合包.

    所需要采用的JAR包:(POM.xml)
    1. <dependency>
    2. <groupid>org.springframework</groupid>
    3. <artifactid>spring-web<artifactid>
    4. <version>3.0.5.RELEASE<version>
    5. </dependency>
    6. <dependency>
    7. <groupid>org.mybatis</groupid>
    8. <artifactid>mybatis</artifactid>
    9. <version>3.0.4</version>
    10. </dependency>
    11. <dependency>
    12. <groupid>mysql</groupid>
    13. <artifactid>mysql-connector-java</artifactid>
    14. <version>5.1.14</version>
    15. </dependency>
    這是整體需要采用的JAR包,當然如果要在WEB環境中跑的話,還需要一些其它的包,比如STRUTS,LOG4J,等等。當然這里只關注對于Mybatis和Spring的整合。拋磚引玉而已
    Mybatis-config.xml:
    (名字可以自定義,最終你會加在Spring配置文件中去加載,讓Spring來進行管理)

    1. <configuration>
    2. <settings>
    3. <setting name="lazyLoadingEnabled" value="false/>
    4. </settings>
    5. <typeAliases>
    6. <typeAlias alias="account" type="com.DreamForce.demo.model.Account" />
    7. </typeAliases>
    8. </configuration>

    這里有兩個配置,一個是LazyLoadingEnable,設為false,讓Mybatis禁止Lazy加載
    在TypeAliases,這是一個別名,之所以要別名,是為了在Mapper映射的時候方便使用,這里type對應的是domin中的Account,按照命名規范的話,我們就account作為別名。
    AccountMapper.xml(這是Mybatis的核心,所有的SQL在這里配置)

    1. <mapper namespace="com.DreamForce.Demo.persist.DAO.AccountMapper">
        <select id="getAccountByUsername" parameterType="string" resultType="account">
          SELECT *  FROM ACCOUNT  WHERE USERID = #{username}
        </select>
      </mapper>
    namespace在這里只是一個虛目錄,也就是說,你完全可以定一個不存在的目錄,Namespace的存在就相當于public屬性,將此Mapper暴露,方便讓Service調用,也可以讓其它API所用。但為了可維護性,這里將其與AccountMapper接口進行綁定,方便維護。
    Select標簽定義了一個"getAccountByUsername"的方法,parameterType代表的是傳入的參數,這里是一個string類型的。
    ResultType用的是account,這里是和之前別名的account一致,如果之前沒有建立別名的話,這里不得不用上全路徑:“com.DreamForce.demo.model.Account”,這樣會相當的麻煩。
    簡單的示例:(建立一個Account類,然后通過AccountService來進行Account類的管理,也可以建立一個代理類AccountMapper)

    Account.java:
    public class Account implements Serializable 
    {
     private static final long serialVersionUID = 8751282105532159742L;
      private String username;
      public String getUsername() {
        return username;
      }
      public void setUsername(String username) {
        this.username = username;
      }
    }

    AccountService.java:

    @Service
    public class AccountService{
      @Autowired
      private AccountMapper accountMapper;
      public Account getAccount(String username) {
        return accountMapper.getAccountByUsername(username);
      }

    通過@Service注解,可以讓Spring進行依賴管理,讓Spring知道這是一個Service Bean.
           @Autowire注解,可以讓自動Set accountMapper,這個也是通過Spring來進行依賴管理的,當然也還需要在Spring配置文件里面進行配置相關的信息,以讓Spring可以知道哪些包需要進行注解掃描,以加入依賴管理



    applicationContext.xml:
    這里用此配置文件進行總體的維護,
    DataSource:
      <context:property-placeholder location="classpath:mysql.properties"/>
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          <property name="driverClassName" value="${jdbc.driverClassName}"></property>
          <property name="url" value="${jdbc.url}"></property>
          <property name="username" value="${jdbc.username}"></property>
          <property name="password" value="${jdbc.password}"></property>
        </bean>
    配置DataSource,這里通過mysql.properties導入相當的值。
    Transaction:
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
    這里將dataSource加入Transaction,
    在應用中,可以采用@transaction的方式自動開啟事務和關閉事務:
    如:
     @Transactional
           public void insert(Object o){......}
    SessionFactory:
     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="configLocation" value="classpath:mybatis-config.xml" />
        </bean>
    配置sessionFactory,需要加入datasource,這里的datasource引用上面配置好的dataSource.同時將mybatis-config.xml加入管理。
    需注意Classpath是從根目錄導入,而這里的mybatis-config.xml按照JEE規范放在:src/main/Resource/mybatis-config.xml
    SessionFactory不需要手動去創建,而在服務器啟動時,自動啟動,所有的Transaction及相關操作都是依賴于這個已啟動的SessionFactory.

    Scan:
    Scan就是Spring的一種簡便的依賴管理,這種之所以簡便是你不需要為每一個Bean,Service,Mapper定義一個依賴管理,而只需要在需要加入依賴的類上加入@Service,@Controller等注解就可以加入依賴
    當然最重要的是@AutoWired,當系統掃描到這個注解時,就會在系統中去找相關聯的類或方法進行注入
      <context:annotation-config/>  
       加入自動注解,讓Spring 進行自動注入,具體參考Spring annotation
    ---annotation scan:
        <context:component-scan base-package="com.DreamForce.Demo.persist.IbatisImpl,com.DreamForce.demo.integrate" />
       上文定義了掃描的路徑,這里定義了兩個路徑以供Spring進行掃描,當然還可以加上一些過濾條件讓掃描更精確,效率更高

    ---mapper scan:
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.DreamForce.Demo.persist.DAO" />
        </bean>
    這里定義了Mybatis 的Mapper文件路徑,所有的Mapper文件在這里去尋找。
    當然你也可以自己手動管理Mapper依賴關系:
    可以在mybatis-config.xml中加入如下代碼,手動進行Mapper依賴維護
    <sqlMap resource="com/DreamForce/Demo/persist/DAO/AccountMapper.xml"/>
    Web.xml:
    1.加入Spring Listener
     <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
    2.contextConfigLocation中加入Spring配置文件,讓Spring Listner進行相關的配置管理
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
      </context-param>
    當有多個Spring配置文件時可以使用 classpath*:/spring-*.xml這種配置方式..讓容器自動尋找Spring配置文件.

    至此Spring-Mybatis基本配置完畢,其它相關信息可以參考其它配置

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 99riav国产精品视频| 亚洲更新最快无码视频| 亚洲熟妇无码乱子AV电影| 依依成人精品视频在线观看| 国产成人AV国语在线观看| 成年美女黄网站色大片免费看| 中文有无人妻vs无码人妻激烈| 少妇和邻居做不戴套视频| 亚洲精品国产精品乱码视色| 免费人成网站免费看视频| 亚洲成AV人片在线观看WV| 日韩有码中文在线观看| 成 人色 网 站 欧美大片| 国产成人av电影在线观看第一页 | 国产不卡一区二区四区| 国产娱乐凹凸视觉盛宴在线视频| 毛片免费观看天天干天天爽| 国产成人精彩在线视频| 无码国产精品一区二区高潮| 久久超碰色中文字幕超清| 精品无人区无码乱码毛片国产 | 成人无码潮喷在线观看| 精品人妻中文无码AV在线| 少妇和邻居做不戴套视频| 精品无码一区二区三区AV| 色AV专区无码影音先锋| 日韩在线观看精品亚洲| 亚洲欧美日韩中文字幕一区二区三区 | 精品人人妻人人澡人人爽人人| 人妻少妇偷人无码视频| 18禁裸体动漫美女无遮挡网站| 久久亚洲AV成人网站玖玖| 亚洲国产精品一二三区| 亚洲AV成人中文无码专区| 9色国产深夜内射| 东方四虎av在线观看| 国产L精品国产亚洲区久久| 亚洲AV成人片不卡无码| 鲁丝片一区二区三区免费| 免费无码国产欧美久久18| 亚洲欧美日韩成人综合一区|