javascript
MyBatis 3 – Spring集成教程
我們有一個用于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。 以下是配置代碼段:
在這里,我們創建了一個帶有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 :
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=passwordmybatis.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集成教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓系统息屏设置(安卓息屏)
- 下一篇: linux win7双系统(linux