咱們如今工程基於的數據庫見「https://www.cnblogs.com/wyhluckdog/p/10147754.html 」這篇博文。html
1.mybatis下載java
mybatis的代碼由githua.com管理,地址:https://github.com/mybatis/mybatis-3/releasesmysql
* mybatis-3.2.7.jar----mybatis的核心包git
* lib----mybatis的依賴包github
* mybatis-3.2.7.pdf----mybatis使用手冊spring
2.需求sql
實現如下功能:數據庫
根據用戶id查詢一個用戶的信息apache
根據用戶名稱模糊查詢用戶信息列表session
添加用戶
更新用戶
刪除用戶
3.工程搭建
(1)第一步:建立java工程
使用ecplise建立java工程,jdk爲1.7.0_72.
(2)第二步:導入jar包
加入mybatis核心包、依賴包(在lib目錄下)、數據驅動包、單元測試包。
(3)第三步:建立包結構config,咱們將全部的配置文件均放在這個包下。
(4)第四步:在config包下建立配置文件log4j.properties。
# Global logging configuration log4j.rootLogger=DEBUG, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
mybatis默認使用log4j做爲做爲輸出日誌信息。
(5)第五步:在config包下建立SqlMapConfig.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> <!-- 和spring整合後 environments配置將廢除--> <environments default="development"> <environment id="development"> <!-- 使用jdbc事務管理--> <transactionManager type="JDBC" /> <!-- 數據庫鏈接池--> <!-- mybatis內置的鏈接池效率不高因此實際公司開發中咱們不用 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> </configuration>
SqlMapConfig.xml是mybatis核心配置文件,上邊文件的配置內容爲數據源、事務管理。
(6)第六步:po類。在工程下建立po包,用於放置po類(本質上與bean類沒有區別,一樣是參數和對應的set/get方法)。
po類做爲mybatis進行sql映射使用,po類一般與數據庫表對應,User.java以下:
package com.huida.po; import java.util.Date; public class User { private int id; private String username;// 用戶姓名 private String sex;// 性別 private Date birthday;// 生日 private String address;// 地址 public void setId(int id) { this.id = id; } public void setUsername(String username) { this.username = username; } public void setSex(String sex) { this.sex = sex; } public void setBirthday(Date birthday) { this.birthday = birthday; } public void setAddress(String address) { this.address = address; } public int getId() { return id; } public String getUsername() { return username; } public String getSex() { return sex; } public Date getBirthday() { return birthday; } public String getAddress() { return address; } @Override public String toString() { return "User [id=" + id + ", username=" + username + "]"; } }
(7)sql映射文件。
在config包下建立sql映射文件User.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"> <!-- namespace:命名空間,作Sql隔離 --> <!-- 在mapper標籤中要寫不少sql語句。在開發項目的過程當中有不少人都會寫Sql 語句,在最後整合的時候可能會重複。如今咱們使用命名空間開進行隔離,好比zhangsan 寫的select * from user,咱們能夠寫爲:zhangsan:select * from user來進行標識。 --> <mapper namespace="test"> </mapper>
namespace:命名空間,用於sql隔離語句。
在mapper標籤中要寫不少sql語句。在開發項目的過程當中有不少人都會寫Sql語句,在最後整合的時候可能會重複。如今咱們使用命名空間開進行隔離,好比zhangsan寫的select * from user,咱們能夠寫爲:zhangsan:select * from user來進行標識。
(8)第八步:加載映射文件。
mybatis框架須要加載映射文件,將User.xml添加在SqlMapConfig.xml,以下:
<mappers> <mapper resource="config/User.xml"/> </mappers>
(9)第九步:根據id查詢用戶信息
一、映射文件:
在User.xml的mapper標籤中添加:
<!-- id:sql語句的惟一標識 test:findUserById就能夠惟一標識sql語句 paremeterType:指定傳入的參數類型 resultSetType:返回值結果類型 #{}佔位符:起到佔位的左永剛,若是傳入的基本類型{String,long,double,int boolean等},那麼 #{}中的變量名稱能夠隨意寫。 --> <select id="findUserById" parameterType="java.lang.Integer" resultType="com.huida.po.User"> <!-- select語句返回的是user對象,因此resultType中寫User類的全路徑 --> select * from user where id=#{id} </select>
id:sql語句的惟一標識 test:findUserById就能夠惟一標識sql語句 paremeterType:指定傳入的參數類型 resultSetType:返回值結果類型 #{}佔位符:起到佔位的左永剛,若是傳入的基本類型{String,long,double,int boolean等},那麼#{}中的變量名稱能夠隨意寫。
二、測試程序:
package com.huida.test; 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 org.junit.Test; import com.huida.po.User; public class UserTest { @Test public void testFindUserById() throws Exception{ //經過流將核心配置文件讀取進來 InputStream inputStream=Resources.getResourceAsStream("config/SqlMapConfig.xml"); //經過核心配置文件輸入流來建立工廠 SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream); //經過工廠建立session SqlSession openSession=factory.openSession(); //查詢語句,查詢id爲1的記錄,返回值爲User對象 User user=openSession.selectOne("test.findUserById", 1); System.out.println(user); //關閉資源 openSession.close(); //factory沒有close(),由於session關閉以後,factory也就關閉了。 } }
(10)執行測試程序,單元測試UserTest方法,能夠看到在控制檯輸出id以及username。說明查詢成功。