MyBatis是一個基於Java的持久層框架,專一是sql,須要咱們程序員本身編寫sql語句,sql的修改優化比較方便,Mybatis也是一個不徹底的ORM框架,本身寫sql,可以完成輸入、輸出映射。java
應用場景:適用於需求變化比較多的項目程序員
與hibernate比較:spring
Hibernate:是一個標準的ORM( 對象關係映射),入門超級簡單,不用寫sql語句,sql自動生成了。sql
Hibernate:應用場景:適用於變化很少的大中小型項目,好比:OA(辦公自動化)、CRM(客戶關係管理)、後臺管理系統…數據庫
環境準備:apache
須要導入的jar文件,以下圖:session
還須要導入log4j.properties文件mybatis
1 log4j.rootLogger=DEBUG, stdout 2 log4j.appender.stdout=org.apache.log4j.ConsoleAppender 3 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 4 log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
整個包和文件關係結構如圖:oracle
1.SqlMapConfig.xmlapp
1 <!DOCTYPE configuration 2 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 <configuration> 5 <!-- 和spring整合後 environments配置將廢除 mybatis-config.xml--> 6 <environments default="development"> 7 <environment id="development"> 8 <!-- 使用jdbc事務管理--> 9 <transactionManager type="JDBC" /> 10 <!-- 數據庫鏈接池--> 11 <dataSource type="POOLED"> 12 <property name="driver" value="oracle.jdbc.driver.OracleDriver" /> 13 <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" /> 14 <property name="username" value="dsx" /> 15 <property name="password" value="admin" /> 16 </dataSource> 17 </environment> 18 </environments> 19 20 <!-- 加載mapper.xml --> 21 <mappers> 22 <!-- com.entity下面 23 <mapper resource="com/entity/User.xml" />--> 24 <mapper resource="Book.xml" /> 25 </mappers> 26 27 </configuration>
2.Book實體類
1 package com.test.book; 2 3 import java.util.Date; 4 5 /** 6 * 7 * @author Mr 8 * 圖書實體類 9 */ 10 public class Book { 11 /* INT PRIMARY KEY NOT NULL, 12 varchar2(100) default null, 13 DATE default null, 14 Number(8,2) default null*/ 15 private int bookid; 16 private String bookname; 17 private Date bookdate; 18 private double bookprice; 19 public int getBookid() { 20 return bookid; 21 } 22 public void setBookid(int bookid) { 23 this.bookid = bookid; 24 } 25 public String getBookname() { 26 return bookname; 27 } 28 public void setBookname(String bookname) { 29 this.bookname = bookname; 30 } 31 public Date getBookdate() { 32 return bookdate; 33 } 34 public void setBookdate(Date bookdate) { 35 this.bookdate = bookdate; 36 } 37 public double getBookprice() { 38 return bookprice; 39 } 40 public void setBookprice(double bookprice) { 41 this.bookprice = bookprice; 42 } 43 public Book() { 44 super(); 45 // TODO Auto-generated constructor stub 46 } 47 public Book( String bookname, Date bookdate, double bookprice) { 48 super(); 49 this.bookname = bookname; 50 this.bookdate = bookdate; 51 this.bookprice = bookprice; 52 } 53 public Book(int bookid, String bookname, Date bookdate, double bookprice) { 54 super(); 55 this.bookid = bookid; 56 this.bookname = bookname; 57 this.bookdate = bookdate; 58 this.bookprice = bookprice; 59 } 60 @Override 61 public String toString() { 62 return "Book的序號是:" + bookid + "\r\n書名是:" + bookname 63 + "\n圖書出版日期是:" + bookdate + "\n圖書的價格是:" + bookprice + "]"; 64 } 65 66 }
3.book.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命名空間,爲了對sql語句進行隔離,方便管理 ,mapper開發dao方式,使用namespace有特殊做用 --> 6 <mapper namespace="test"> 7 <!-- 添加圖書 --> 8 <insert id="insertBook" parameterType="com.test.book.Book"> 9 INSERT INTO book VALUES(seq_book_id.nextval,#{bookname},#{bookdate},#{bookprice}) 10 </insert> 11 <!-- 刪除一本書 --> 12 <delete id="delBook" parameterType="java.lang.Integer"> 13 DELETE book WHERE bookid=#{bookid} 14 </delete> 15 <!-- 更新一本圖書 --> 16 <update id="upBook" parameterType="com.test.book.Book"> 17 UPDATE book SET bookname=#{bookname},bookprice=#{bookprice} WHERE bookid=#{bookid} 18 </update> 19 <!-- 查詢一本圖書 --> 20 <select id="findBookById" parameterType="java.lang.Integer" resultType="com.test.book.Book"> 21 SELECT * FROM book WHERE bookid=#{bookid} 22 </select> 23 <!-- 根據書名模糊查詢 --> 24 <select id="findBookByName" parameterType="java.lang.String" resultType="com.test.book.Book"> 25 SELECT * FROM book WHERE bookname LIKE '%${value}%' 26 </select> 27 28 </mapper>
4.測試類Test1.java
1 package com.test.test; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.Date; 6 import java.util.List; 7 8 import org.apache.ibatis.io.Resources; 9 import org.apache.ibatis.session.SqlSession; 10 import org.apache.ibatis.session.SqlSessionFactory; 11 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 12 13 import com.test.book.Book; 14 15 /** 16 * 17 * @author Mr 18 * mybatis圖書測試類 19 */ 20 public class Test1 { 21 22 public static void main(String[] args) { 23 try { 24 //找到mybatis文件並加載 25 String resource="SqlMapConfig.xml"; 26 //讀取這個文件 27 InputStream inputStream = Resources.getResourceAsStream(resource); 28 //建立sqlSessionFactory會話工廠 29 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 30 //操做數據庫的sqlsession 31 SqlSession sqlSession = sqlSessionFactory.openSession(); 32 33 /* //添加圖書 34 Book book = new Book("MyBatis入門到精通", new Date(), 68.58); 35 sqlSession.insert("test.insertBook", book); 36 sqlSession.commit();*/ 37 38 /* //刪除一本圖書 39 sqlSession.delete("test.delBook",2); 40 //提交事務 41 sqlSession.commit();*/ 42 43 /* //更新一本圖書 44 Book book = new Book(); 45 book.setBookid(5); 46 book.setBookname("Linux從入門到精通"); 47 book.setBookprice(59.45); 48 49 sqlSession.update("test.upBook", book); 50 //提交事務 51 sqlSession.commit();*/ 52 53 /* //查詢一本書 54 Book book = sqlSession.selectOne("test.findBookById", 7); 55 System.out.println(book);*/ 56 57 //根據書名模糊查詢 58 List<Book> list = sqlSession.selectList("test.findBookByName", "java"); 59 for (Book book : list) { 60 System.out.println(book); 61 } 62 63 64 //釋放資源 65 sqlSession.close(); 66 67 } catch (IOException e) { 68 // TODO Auto-generated catch block 69 e.printStackTrace(); 70 }finally{ 71 System.out.println("\n執行ok"); 72 } 73 74 } 75 76 }
歡迎交流學習,若有不足即便補充!