MyBatis实现增删改查

MyBatis是一个基于Java的持久层框架,专注是sql,需要我们程序员自己编写sql语句,sql的修改优化比较方便,Mybatis也是一个不完全的ORM框架,自己写sql,能够完成输入、输出映射。

应用场景:适用于需求变化比较多的项目

与hibernate比较:

Hibernate:是一个标准的ORM( 对象关系映射),入门超级简单,不用写sql语句,sql自动生成了。

  Hibernate:应用场景:适用于变化不多的大中小型项目,比如:OA(办公自动化)、CRM(客户关系管理)、后台管理系统…

环境准备:

  需要导入的jar文件,如下图:

还需要导入log4j.properties文件

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

整个包和文件关系结构如图:

1.SqlMapConfig.xml

 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 + "
书名是:" + bookname
63                 + "
图书出版日期是:" + bookdate + "
图书的价格是:" + 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("
执行ok");
72         }
73 
74     }
75 
76 }

 欢迎交流学习,如有不足即使补充!

原文地址:https://www.cnblogs.com/myhzb/p/7642079.html