zoukankan      html  css  js  c++  java
  • 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 }

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

  • 相关阅读:
    方法
    逻辑运算符/三元运算符/Scanner
    多线程线程状态和案例演示
    实现多线程的两种方式
    初识多线程
    IO流一些问题的总结
    IO流—其他流
    厦门Android开发三年,工资不到1w,敢问路在何方?
    二本渣渣考研失败,幸得知乎内推,成功拿下Android开发offer!
    2020Android面试心得,已拿到offer
  • 原文地址:https://www.cnblogs.com/myhzb/p/7642079.html
Copyright © 2011-2022 走看看