Windows下Java+MyBatis框架+MySQL的開辟情況搭建教程。本站提示廣大學習愛好者:(Windows下Java+MyBatis框架+MySQL的開辟情況搭建教程)文章只能為提供參考,不一定能成為您想要的結果。以下是Windows下Java+MyBatis框架+MySQL的開辟情況搭建教程正文
MyBatis是一個Java耐久化框架,它經由過程XML描寫符或注解把對象與存儲進程或SQL語句聯系關系起來。
MyBatis是在Apache允許證 2.0下分發的自在軟件,是iBATIS 3.0的分支版本。其保護團隊也包括iBATIS的始創成員。
與其他的對象關系映照框架分歧,MyBatis並未將Java對象與數據庫表聯系關系起來,而是將Java辦法與SQL語句聯系關系。MyBatis許可用戶充足應用數據庫的各類功效,例如存儲進程、視圖、各類龐雜的查詢和某數據庫的專有特征。假如要對遺留數據庫、不標准的數據庫停止操作,或許要完整掌握SQL的履行,MyBatis是一個不錯的選擇。
與JDBC比擬,MyBatis簡化了相干代碼:SQL語句在一行代碼中就可以履行。MyBatis供給了一個映照引擎,聲明式的把SQL語句履行成果與對象樹映照起來。經由過程應用一種內建的類XML表達式說話,或許應用Apache Velocity集成的插件,SQL語句可以主動態的生成。
MyBatis與Spring Framework和Google Guice集成,這使開辟者免於依附性成績。
MyBatis支撐聲明式數據緩存(declarative data caching)。當一條SQL語句被標志為“可緩存”後,初次履行它時從數據庫獲得的一切數據會被存儲在一段高速緩存中,往後履行這條語句時就會從高速緩存中讀取成果,而不是再次射中數據庫。MyBatis供給了默許下基於Java HashMap的緩存完成,和用於與OSCache、Ehcache、Hazelcast和Memcached銜接的默許銜接器。MyBatis還供給API供其他緩存完成應用。
要點
這段時光進修上去,其實對Mybatis來講重要的進程沒法是以下幾步
1. 從XML設置裝備擺設文件中獲得SessionFactory,然後由SessionFactory發生響應的Session。
2. 是用Session對象對營業數據完成響應的CRUD操作(增刪改查)和響應的事務掌握。
3. 應用終了後封閉響應的Session,以避免過度占用資本
4. 應用設置裝備擺設響應的Mapper xml文件停止營業實體的JavaBean與數據庫表之間做響應的Map操作
戰前預備:
1. 開辟情況Eclipse JavaEE IDE,JDK 1.6,數據庫mysql 5.5
2. 下載響應Jar包,以備後用
mybatis-3.2.3.zip 解壓後拿出 mybatis-3.2.3.jar,=> 下載地址: http://code.谷歌.com/p/mybatis/ (Mybatis焦點包)
mybatis-generator-core-1.3.1.jar => 下載地址: http://code.谷歌.com/p/mybatis/wiki/Generator (Mybatis主動生成設置裝備擺設文件包)
mysql-connector-java-5.1.26-bin.jar => 下載地址:http://dev.mysql.com/downloads/connector/j/ (Mysql 的jdbc驅動包)
搭建步調
接上去年夜家可以再Eclipse上面建一個名為MybatisDemo的Java Project項目,依照以下圖中所示新建響應的包構造和文件夾構造,個中config與mapper分離為文件夾,
包david.mybatis.demo與包david.mybatis.model下分離寄存響應的demo運轉法式與Javabean對象,lib文件夾下寄存方才下載的那幾個第三方jar包。
建完上面的目次,我們可以添加響應的Jar包,以下圖
完成後,履行上面SQL,樹立DEMO所需的表構造,分離有3張表,Visitor(拜訪者表),Website(網站表),Channel(頻道表)
/*創立Visitor*/ CREATE TABLE Visitor ( Id INT(11) NOT NULL AUTO_INCREMENT, Name VARCHAR(1000) NOT NULL, Email VARCHAR(1000) NOT NULL, Status INT NOT NULL DEFAULT 1, CreateTime DateTime, PRIMARY KEY(Id) ) /*創立網站表*/ CREATE TABLE Website ( Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(1000) NOT NULL, VisitorId INT REFERENCES Visitor(Id), Status INT NOT NULL DEFAULT 1, CreateTime DateTime ) /*創立頻道表*/ CREATE TABLE Channel ( Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(1000) NOT NULL, WebsiteId INT REFERENCES Website(Id), Status INT NOT NULL DEFAULT 1, CreateTime DateTime )
一切這些都完成後,我們就要開端著手啦~
就像開首說的,Mybatis的一切設置裝備擺設都源於一份XML設置裝備擺設文件,我們須要在config文件夾下,新建名為mybatis_demo_config.xml的設置裝備擺設文件,這一份器械就是我們前面所須要操作的焦點之一。
在設置裝備擺設這個文件萬萬要留意<configuration>節點內的元素都是有層級次序的請求的,不克不及夠隨便改換順序,不然在加載xml設置裝備擺設文件的時刻會湧現異常而招致後續操作不勝利。
詳細的節點解釋年夜家可以檢查http://mybatis.github.io/mybatis-3/zh/configuration.html#,這裡只說比擬經常使用的節點,typeAliases,environments,mappers。
1. typeAliases => 別號節點,可以經由過程設置這個節點的屬性,如許設置裝備擺設文件中其他須要實體名字的處所都可使用此別號而不是完整限制名
例如 <typeAlias type="david.mybatis.model.Visitor" alias="Visitor" />
2. environments => 情況節點,設置裝備擺設數據銜接相干的信息
3. mappers => 設置裝備擺設SQL映照語句。
最簡略的設置裝備擺設以下:
<?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> <typeAliases> <typeAlias type="david.mybatis.model.Visitor" alias="Visitor" /> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <!-- ?useUnicode=true&characterEncoding=utf8為了支撐中文拔出 --> <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis_db?useUnicode=true&characterEncoding=utf8" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/VisitorMapper.xml" /> </mappers> </configuration>
在包david.mybatis.demo上面新建一個名為MyBatisUtils類,外面寄存獲得SqlSession與封閉SqlSession的辦法,提煉出來便利屢次復用。
package david.mybatis.demo; import java.io.InputStream; 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 david.mybatis.model.CRUD_Enum; public class MybatisUtils { private static final String CONFIG_PATH = "config/mybatis_demo_config.xml"; /* * 獲得數據庫拜訪鏈接 */ public static SqlSession getSqlSession() { SqlSession session = null; try { InputStream stream = Resources.getResourceAsStream(CONFIG_PATH); //可以依據設置裝備擺設的響應情況讀取響應的數據庫情況 // SqlSessionFactory factory = new SqlSessionFactoryBuilder().build( // stream, "development"); SqlSessionFactory factory = new SqlSessionFactoryBuilder() .build(stream); session = factory.openSession(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return session; } /* * 獲得數據庫拜訪鏈接 */ public static void closeSession(SqlSession session) { session.close(); } /* * 前往操作記載新聞 */ public static void showMessages(CRUD_Enum type, int count) { switch (type) { case Add: System.out.println("添加了" + count + "筆記錄。"); break; case Delete: System.out.println("刪除" + count + "筆記錄。"); break; case Update: System.out.println("更新了" + count + "筆記錄。"); break; case Query: System.out.println("婚配了" + count + "筆記錄。"); break; case List: System.out.println("共有" + count + "筆記錄。"); break; default: break; } } }
在包david.mybatis.model上面新建一個名為Visitor的類,用來作響應的OR Mapping。
package david.mybatis.model; import java.text.SimpleDateFormat; import java.util.Date; public class Visitor { private int id; private String name; private String email; private int status; private Date createTime; public Visitor() { // TODO Auto-generated constructor stub createTime = new Date(); } public Visitor(String name, String email) { this.name = name; this.email = email; this.status = 1; this.createTime = new Date(); } public int getId() { return id; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setEmail(String email) { this.email = email; } public String getEmail() { return email; } public Date getCreateTime() { return createTime; } @Override public String toString() { // TODO Auto-generated method stub return String.format("{Id: %d, Name: %s, CreateTime: %s}", id, name, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime)); } }
在包david.mybatis.demo上面新建一個VisitorMapper.xml,用來映照響應SQL語句。
這裡要留意namespace=>david.mybatis.demo.IVisitorOperation必定要與對應這個包上面的現實文件名,IVisitorOperation不然沒法勝利加載響應的映照文件
<mapper namespace="david.mybatis.demo.IVisitorOperation"> <select id="basicQuery" parameterType="int" resultType="Visitor"> select * from visitor where id=#{id} and Status>0 order by Id </select> </mapper>
接上去運轉上面的法式
public static void testBasicQuery(int id) { SqlSession session = MybatisUtils.getSqlSession(); try { Visitor visitor = (Visitor) session.selectOne("david.mybatis.demo.IVisitorOperation.basicQuery", id); MybatisUtils.closeSession(session); System.out.println(visitor); } catch (Exception e) { // TODO: handle exception } }
一個最簡略的履行成果就出來啦
這算是Mybatis系列的HelloWord~