什么是 MyBatis?
MyBatis 是一款優秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對象)為數據庫中的記錄。
提取碼:2bnz
提取碼:9oqw
將jar包下載下來之后我們開始搭建我們的第一個MyBatis項目
一、新建javaWeb項目,普通項目也可,我的項目結構圖如下
二、導入Jar包,將下載下來的,jar解壓導入到lib目錄下,這樣jar就配置完成了
第三步、xml文件的配置,在src下面新建“MyBatis-config.xml”里面內容如下,里面我都注釋的十分清楚了,所以直接復制就好了
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 <configuration> 5 <!-- 和spring整合后 environments配置將廢除 --> 6 <environments default="development"> 7 <environment id="development"> 8 <!-- 使用jdbc事務管理 --> 9 <transactionManager type="JDBC" /> 10 <!-- 數據庫連接池 --> 11 <dataSource type="POOLED"> 12 <!-- 獲取驅動 --> 13 <property name="driver" value="com.mysql.jdbc.Driver" /> 14 <!-- 設置數據庫地址 --> 15 <property name="url" value="jdbc:mysql://localhost:3306/DBgood?characterEncoding=utf-8" /> 16 <!-- 設置數據庫賬號 --> 17 <property name="username" value="root" /> 18 <!-- 設置數據庫密碼 --> 19 <property name="password" value="123456" /> 20 </dataSource> 21 </environment> 22 </environments> 23 </configuration>
第四步、創建log4j.properties(可有可無,如果配置會打印一些運行的信息),同樣也是在src目錄之下,代碼如下
# 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
第五步、新建一個數據庫,數據庫的名字“DBgood” 建表語句如下
1 SET FOREIGN_KEY_CHECKS=0; 2 3 -- ---------------------------- 4 -- Table structure for good 5 -- ---------------------------- 6 DROP TABLE IF EXISTS `good`; 7 CREATE TABLE `good` ( 8 `goodID` int(11) NOT NULL AUTO_INCREMENT, 9 `goodName` varchar(255) NOT NULL, 10 `img` varchar(255) NOT NULL, 11 `price` varchar(255) NOT NULL, 12 `type` varchar(255) NOT NULL, 13 PRIMARY KEY (`goodID`) 14 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; 15 16 -- ---------------------------- 17 -- Records of good 18 -- ---------------------------- 19 INSERT INTO `good` VALUES ('1', '小浣熊干脆面', 'D://', '0.5', '食物'); 20 INSERT INTO `good` VALUES ('2', '小浣熊干脆面', 'D://', '0.5', '食物');
第六步、在“com.lianghua.bean”包下面新建實體類
1 package com.lianghua.bean; 2 3 public class Good { 4 5 private int goodID ; 6 private String goodName ; 7 private String img ; 8 private String price ; 9 private String type ; 10 11 public int getGoodID() { 12 return goodID; 13 } 14 public void setGoodID(int goodID) { 15 this.goodID = goodID; 16 } 17 public String getGoodName() { 18 return goodName; 19 } 20 public void setGoodName(String goodName) { 21 this.goodName = goodName; 22 } 23 public String getImg() { 24 return img; 25 } 26 public void setImg(String img) { 27 this.img = img; 28 } 29 public String getPrice() { 30 return price; 31 } 32 public void setPrice(String price) { 33 this.price = price; 34 } 35 public String getType() { 36 return type; 37 } 38 public void setType(String type) { 39 this.type = type; 40 } 41 @Override 42 public String toString() { 43 return "Good [goodID=" + goodID + ", goodName=" + goodName + ", img=" + img + ", price=" + price + ", type=" 44 + type + "]"; 45 } 46 47 48 }
第七步、在“com,lianghua.mapper”包下面新建實體類的mapper,注意這個類是接口“interface”類型代碼如下
1 package com.lianghua.mapper; 2 3 import java.util.List; 4 5 import com.lianghua.bean.Good; 6 7 public interface GoodMapper { 8 //1、方法名 與 map.xml中的 節點的ID一致 9 //2、傳入的參數與 map.xml中 的傳入類型 (parameterType)保持一致 10 //3、返回值類型 也要和 map.xml中 返回值類型保持一致 11 //4、map.xml 中的namespace的值為 當前接口 12 public List<Good> listGood( ); 13 14 }
第八步、在“com,lianghua.mapper”目錄下創建sql映射文件GoodMapper.xml,代碼如下
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <!-- namespace: 1. namespace必須和Mapper接口類路徑一致 --> 6 <mapper namespace="com.lianghua.mapper.GoodMapper"> 7 <!-- 2. id必須和Mapper接口方法名一致 --> 8 <!-- 3. parameterType必須和接口方法參數類型一致 --> 9 <!-- 4. resultType必須和接口方法返回值類型一致 --> 10 <select id="listGood" resultType="com.lianghua.bean.Good"> 11 <!-- 這里寫sql語句 --> 12 SELECT * FROM good 13 </select> 14 15 </mapper>
這個時候我的代碼結構如下
第九步、如果想讓 這個mpper生效還需要在MyBatis-config.xml中添加三行代碼,如果想再添加一個mapper只需要再寫一行<mapper />即可
1 <mappers> 2 <mapper resource="com/lianghua/mapper/GoodMapper.xml"/> 3 </mappers>
這個時候基本已經配置完成了,我們來運行一下測試一下,看看能不能查到數據
第十步、運行
1 package com.lianghua.service; 2 3 import java.io.Reader; 4 import java.util.Date; 5 6 import org.apache.ibatis.io.Resources; 7 import org.apache.ibatis.session.SqlSession; 8 import org.apache.ibatis.session.SqlSessionFactory; 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 10 11 import com.lianghua.mapper.GoodMapper; 12 13 14 public class Test { 15 public static void save() throws Exception{ 16 //1、加載配置文件 17 Reader reader= Resources.getResourceAsReader("MyBatis-config.xml"); 18 //2、創建 SqlSessionFactoryBuilder 對象 19 SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder(); 20 //3、創建SqlSessionFactory 21 SqlSessionFactory sf = sfb.build(reader); 22 //4、打開SqlSession對象 23 SqlSession sqlsession = sf.openSession(); 24 //5、創建接口 mapper 的實體類對象 25 GoodMapper bMapper = sqlsession.getMapper(GoodMapper.class); 26 //5、執行對應的方法,並打印數據 27 28 System.out.println("數據:"+bMapper.listGood()); 29 //6、執行提交操作 30 sqlsession.commit(); 31 //7、關閉資源 32 sqlsession.close(); 33 34 35 } 36 37 public static void main(String[] args) throws Exception { 38 save(); 39 } 40 41 42 }
結果如下