MyBatis實現增刪改查

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 }

 歡迎交流學習,若有不足即便補充!

相關文章
相關標籤/搜索