日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

MyBatis 3 – Spring集成教程

發布時間:2023/12/3 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis 3 – Spring集成教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作為本教程的第一步(帶有MyBatis 3的Spring MVC 3 CRUD示例),我們將定義一個MyBatis服務,該服務將幫助我們在數據庫上執行CRUD操作。

我們有一個用于User的域類和一個用于將User信息存儲在數據庫中的數據庫表。 在示例中,我們將使用xml配置模型來定義將執行CRUD操作的SQL命令。

我們的領域類

package com.raistudies.domain;import java.io.Serializable;public class User implements Serializable{private static final long serialVersionUID = 3647233284813657927L;private String id;private String name = null;private String standard = null;private String age;private String sex = null;//setter and getter have been omitted to make the code short@Overridepublic String toString() {return "User [name=" + name + ", standard=" + standard + ", age=" + age+ ", sex=" + sex + "]";} }

我們的域類中有五個屬性,它們稱為User,它們必須為其提供數據庫服務。

我們的數據庫表

以下是我們的數據庫表:

CREATE TABLE `user` (`id` varchar(36) NOT NULL,`name` varchar(45) DEFAULT NULL,`standard` varchar(45) DEFAULT NULL,`age` varchar(45) DEFAULT NULL,`sex` varchar(45) DEFAULT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

創建CRUD操作的界面

為了使用MyBatis 3定義CRUD數據庫操作,我們必須指定將用于執行CRUD操作的方法。 以下是我們示例的界面:

package com.raistudies.persistence;import java.util.List;import com.raistudies.domain.User;public interface UserService {public void saveUser(User user);public void updateUser(User user);public void deleteUser(String id);public List<User> getAllUser(); }

我們這里有四種方法來執行創建,更新,刪除和從數據庫獲取操作。

UserService接口的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="com.raistudies.persistence.UserService"><resultMap id="result" type="user"><result property="id" column="id"/><result property="name" column="name"/><result property="standard" column="standard"/><result property="age" column="age"/><result property="sex" column="sex"/></resultMap><select id="getAllUser" parameterType="int" resultMap="result">SELECT id,name,standard,age,sexFROM user;</select><insert id="saveUser" parameterType="user">INSERT INTO user (id,name,standard,age,sex)VALUE (#{id},#{name},#{standard},#{age},#{sex})</insert><update id="updateUser" parameterType="user">UPDATE userSETname = #{name},standard = #{standard},age = #{age},sex = #{sex}where id = #{id}</update><delete id="deleteUser" parameterType="int">DELETE FROM userWHERE id = #{id}</delete> </mapper>

您會在這里看到很多新東西:

映射文件將包含元素<mapper />來定義服務的SQL語句。 在這里,屬性“ 名稱空間 ”定義了已為其定義此映射文件的接口。

<insert />標記定義該操作為插入類型。 “ id ”屬性的值指定為其定義了SQL語句的函數名稱。 這里是“ saveUser ”。 屬性“ parameterType ”定義方法的參數是哪種類型。 我們在這里為User類使用了別名。 稍后將在MyBatis配置文件中配置別名。 然后,我們必須定義SQL語句。 #{id}定義將類User的屬性“ id ”作為參數傳遞給SQL查詢。

<resultMap />標記用于指定User類和用戶表之間的映射。 <resultMap />的id是映射定義的唯一名稱。 在此標簽下,我們定義了不同的屬性以及將哪個列綁定到哪個屬性。

<select />標記用于指定選擇SQL語句。 “ id ”屬性的值指定為其定義了SQL語句的函數名稱。

屬性resultMap用于將SQL語句的返回類型定義為一個集合。

MyBatis 3配置文件

以下是我們的MyBatis配置文件:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><settings><!-- changes from the defaults --><setting name="lazyLoadingEnabled" value="false" /></settings><typeAliases><typeAlias type="com.raistudies.domain.User" alias="user"/></typeAliases> </configuration>

您可以看到,我們尚未在此處定義一些非常重要的屬性:

  • 數據庫連接屬性。
  • 與交易相關的屬性。
  • 并且也沒有定義映射器配置。
  • MyBatis 3是一個非常強大的SQL映射框架,它使用用戶定義的服務的代理實現自動生成數據庫訪問類。 如果您將MyBatis 3與Spring框架集成并使用這些代理實現,我們就會意識到這是真正的力量。 這將使我們的數據庫工作減少80%。 在下面,我們將看到如何將MyBatis 3與Spring 3框架集成在一起。 以前,我們使用MyBatis 3為User類創建了CRUD數據庫服務。現在,我們將使用MyBatis與Spring框架集成的數據服務進行集成。

    使用的工具:

    • c3p0-0.9.1.2.jar –用于提供池化數據庫連接。
    • mybatis-spring-1.0.0.jar –用于將MyBatis與Spring集成(由MyBatis團隊提供)
    • Spring JDBC和Core庫

    要集成這兩個框架,我們必須遵循以下步驟:

    步驟1:將數據源定義為Spring bean
    由于我們將使用c3po數據源提供程序,因此我們必須在Spring中定義數據源bean。 以下是配置代碼段:

    <!-- Declare a datasource that has pooling capabilities --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" p:driverClass="${app.jdbc.driverClassName}" p:jdbcUrl="${app.jdbc.url}" p:user="${app.jdbc.username}" p:password="${app.jdbc.password}" p:acquireIncrement="10" p:idleConnectionTestPeriod="60" p:maxPoolSize="100" p:maxStatements="50" p:minPoolSize="10" />

    在這里,我們創建了一個帶有com.mchange.v2.c3p0.ComboPooledDataSource類的id dataSource的spring bean,它由c3p0庫提供用于合并數據源。

    我們在bean中設置了一些屬性。 以下是在bean中定義的屬性的描述:

    • driverClass :將用于連接數據庫的驅動程序類。
    • jdbcUrl :jdbc定義數據庫連接字符串的URL。
    • user :數據庫用戶的用戶名。
    • password :數據庫用戶的密碼。
    • acquisitionIncrement :在連接短缺的情況下,一次將創建多少個連接。
    • idleConnectionTestPeriod :連接斷開多長時間后,如果不再使用它,它將被關閉。
    • maxPoolSize :可以創建的最大連接數。
    • maxStatements :連接上要執行的最大SQL語句數。
    • minPoolSize :要創建的最小連接數。

    我們已經使用Spring EL定義了許多屬性值,這些屬性值將從屬性文件中獲取。

    在Spring定義交易管理器

    我們將使用Spring JDBC框架提供的用戶事務管理器,為了定義事務級別,我們將使用注釋。 以下是事務管理器的配置:

    <!-- Declare a transaction manager --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource" /><!-- Enable annotation style of managing transactions --> <tx:annotation-driven transaction-manager="transactionManager" />

    定義MyBatis SqlSessionFactory和MapperScanner

    <!-- define the SqlSessionFactory, notice that configLocation is not needed when you use MapperFactoryBean --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation" value="WEB-INF/mybatis/sqlmap-config.xml" /> </bean><!-- scan for mappers and let them be autowired --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="${MapperInterfacePackage}" /> </bean>

    SqlSessionFactory bean將提供MyBatis的SessionFactory實例。 要配置SqlSessionFactory,我們需要定義兩個屬性。 首先,MyBatis將使用其創建連接數據庫的數據源和MyBatis配置文件名來配置MyBatis的環境。

    MapperScannerConfigurer用于發布定義為MyBatis的數據服務接口,以配置為Spring Bean。 我們只需要提供定義接口及其映射XML文件的程序包即可。 我們可以使用通用分隔符或分號指定多個軟件包。 之后,我們將能夠使用@Autowired批注獲取UserService的實例。 我們不必實現該接口,因為MyBatis將為此提供代理實現。

    Spring配置文件一起
    這是我們的jdbc-context.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:property-placeholder location="/WEB-INF/jdbc.properties,/WEB-INF/mybatis/mybatis.properties" /><!-- Enable annotation style of managing transactions --><tx:annotation-driven transaction-manager="transactionManager" /><!-- Declare a datasource that has pooling capabilities --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close" p:driverClass="${app.jdbc.driverClassName}"p:jdbcUrl="${app.jdbc.url}" p:user="${app.jdbc.username}" p:password="${app.jdbc.password}"p:acquireIncrement="10" p:idleConnectionTestPeriod="60" p:maxPoolSize="100"p:maxStatements="50" p:minPoolSize="10" /><!-- Declare a transaction manager --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"p:dataSource-ref="dataSource" /><!-- define the SqlSessionFactory, notice that configLocation is not needed when you use MapperFactoryBean --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation" value="WEB-INF/mybatis/sqlmap-config.xml" /></bean><!-- scan for mappers and let them be autowired --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="${MapperInterfacePackage}" /></bean></beans>

    jdbc.properties文件

    # database properties app.jdbc.driverClassName=com.mysql.jdbc.Driver app.jdbc.url=jdbc:mysql://localhost/mybatis-example app.jdbc.username=root app.jdbc.password=password

    mybatis.properties文件

    MapperInterfacePackage=com.raistudies.persistence

    參考: 使用我們的JCG合作伙伴 使用MyBatis 3映射框架創建CRUD服務-第1部分和集成MyBatis 3和Spring框架-第2部分 ? Rai Studies博客上的Rahul Mondal。


    翻譯自: https://www.javacodegeeks.com/2012/02/mybatis-3-spring-integration-tutorial.html

    總結

    以上是生活随笔為你收集整理的MyBatis 3 – Spring集成教程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。