本教程將向您展示使用數據庫配置MyBatis 3的步驟。 MyBatis 3支持基于xml和基于注釋的配置,但是在使用xml配置時可以看到MyBatis的真正功能。 本教程僅向您顯示使用xml的配置。
使用的工具:
- MyBatis 3.0.4
- MySql Java連接器5.1
使用MyBatis不需要很多jar,只需帶驅動程序的MyBatis jar:
- commons-logging-1.1.1.jar
- mybatis-3.0.4.jar
- mysql-connector-java-5.1.13-bin.jar
在本教程中,我們將配置MyBatis將pojo類對象存儲到數據庫表中。 以下是在此示例中將使用的數據庫表:
CREATE TABLE Product(id int primary key, brand varchar(20),model varchar(20), name varchar(30));
因此,首先,在要用于存儲的數據庫中創建此表。
以下是將映射到表產品的Product類:
package com.raistudies.domain;import java.io.Serializable;public class Product implements Serializable{private static final long serialVersionUID = -1900054678340682193L;private long id;private String brand;private String model;private String name;// Getter and setter are removed to make the short}
我們將看到將上述內容映射到數據庫表產品所要執行的配置。
在MyBatis 3中,我們有兩種類型的配置文件:
環境規范配置文件:將只有一個文件定義MyBatis映射框架要使用的環境設置。 該文件定義了與數據庫連接,驅動程序,事務管理,連接池,其他映射文件相關的設置,以及許多我們將在后續教程中看到的設置。
映射文件: MyBatis框架的一個應用程序中可以有多個映射文件。 映射文件包含有關在Java接口中定義的相關服務集的信息。 它定義了用于特定服務的參數化SQL語句,輸入了SQL參數,并且還定義了由SQL語句返回的結果數據的返回映射。
這就是說,我們的示例中將有兩個xml文件:一個用于環境設置,另一個將是與Product類相關的服務的映射文件。
以下是環境規范配置xml文件:
<?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><setting name="lazyLoadingEnabled" value="false" /></settings><typeAliases><typeAlias type="com.raistudies.domain.Product" alias="product"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost/test"/><property name="username" value="root"/><property name="password" value="pass"/></dataSource></environment></environments><mappers><mapper resource="com/raistudies/services/ProductServices.xml"/></mappers></configuration>
如您所見,<configuration />保留了配置,并且有許多標簽定義了MyBatis映射框架的設置。 我們將一一看到以上所有設置:
<settings /> :此標簽用于指定一些用于整個MyBatis應用程序的通用設置。 上面的文件文件包含將屬性“ lazyLoadingEnabled”設置為禁用的示例。 在接下來的教程中,我們將看到更多設置選項。
<typeAliases>:標記將允許為我們的域類使用定義別名,以便以后在任何MyBatis配置文件中使用。
<environments />:標簽用于定義與數據庫相關的設置。 我們可以有多個環境設置,但是MyBatis將一次使用默認屬性指定的一個環境。
<mappers>:此標記用于定義映射文件xml文件的位置。 我們可以定義多個映射文件。
在界面中定義服務:
之后,您必須創建一個接口,該接口將定義我們要提供的服務。 在is接口之后,該接口僅為域類Product定義了一種“保存”方法:
package com.raistudies.services;import com.raistudies.domain.Product;public interface ProductServices {public void save(Product product);
}
現在,我們必須為此服務定義映射文件。 以下是接口的映射文件:
<?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.services.ProductServices"><insert id="save" parameterType="product">INSERT INTO Product (id,brand,model,name)VALUE ( #{id}, #{brand}, #{model}, #{name} )</insert></mapper>
映射文件將包含元素<mapper />來定義服務的SQL語句。 在這里,屬性“ 名稱空間 ”定義了已為其定義此映射文件的接口。
<insert />標記定義該操作為插入類型。 “ id ”屬性的值指定為其定義操作的函數名稱。 這是保存。 屬性“ parameterType ”定義方法的參數是哪種類型。 我們在這里為產品類使用了別名。 然后,我們必須定義SQL語句。 #{id}定義將Product類的屬性“ id ”作為參數傳遞給SQL查詢。
創建MyBatis會話并使用產品服務:
以下是我們的測試類,該類創建MyBasit的Session,然后使用ProductService接口的save方法保存Product類的實例:
package com.raistudies.runner;import java.io.IOException;
import java.io.Reader;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.raistudies.domain.Product;
import com.raistudies.services.ProductServices;public class AppTester {private static SqlSessionFactory sessionFac = null;private static Reader reader;private static String CONFIGURATION_FILE = "sqlmap-config.xml";static{try {reader = Resources.getResourceAsReader(CONFIGURATION_FILE);sessionFac = new SqlSessionFactoryBuilder().build(reader);} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {SqlSession session = sessionFac.openSession();try {ProductServices productServiceObj = session.getMapper(ProductServices.class);Product product = new Product();product.setId((long)(Math.random()*100));product.setBrand("LG");product.setModel("P500");product.setName("Optimus One");productServiceObj.save(product);session.commit();} finally {session.close();}}}
session.getMapper()方法提供由MaBatis框架在運行時定義的接口的默認實現。
運行此示例時,記錄將保存到數據庫表中。
![]() |
MyBatis配置插入語句結果 |
您也可以通過從以下鏈接下載示例代碼來嘗試該示例:
來源+庫: 下載
參考:來自Rai Studies博客的JCG合作伙伴 Rahul Mondal 配置MyBatis 3 。
翻譯自: https://www.javacodegeeks.com/2012/01/configuring-mybatis-3.html