MyBatis实现数据库操作DAO的三种方式

1.Dao接口+Dao实现类+XML映射文件(不建议使用,较繁琐)

具体实现细节:通过在Dao接口的实现类中调用SqlSession的方法,与传统的在实现类中调用JDBC提供的一系列执行sql的方法大同小异

1. 创建Dao接口:

package com.oracle.dao;

import java.util.List;

import com.oracle.vo.Book;

public interface BookDao {
    /**
     * 插入一本图书
     * @param book
     */
    public void save(Book book);
    /**
     * 根据isbn删除图书
     * @param isbn
     */
    public void delete(Integer isbn);
    /**
     * 查询全部图书信息
     * @return
     */
    public List getAll();
}
  1. 创建具体的Dao实现类:具体调用SqlSession的方法执行数据库的操作
package com.oracle.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.oracle.utils.SessionUtil;
import com.oracle.vo.Book;

public class BookDaoImpl implements BookDao {

    public void save(Book book) {
        //获得session
        SqlSession session=SessionUtil.getSession();
        //执行操作
        session.insert("save", book);
        session.commit();
        session.close();
    }

    public void delete(Integer isbn) {
        //获得session
        SqlSession session=SessionUtil.getSession();
        //执行操作
        session.delete("delete", isbn);
        session.commit();
        session.close();
    }

    public List getAll() {
        //获得session
        SqlSession session=SessionUtil.getSession();
        //执行操作
        List list= session.selectList("getAll");
        session.close();
        return list;
    }

}
  1. 配置文件XML:只负责配置sql语句及参数


<mapper namespace="com.oracle.dao.BookDao">
    <insert id="save" parameterType="com.oracle.vo.Book"
        keyProperty="isbn" useGeneratedKeys="true">
        insert into
        book(isbn,bookname,price)
        values(null,#{bookName},#{price})
    insert>
    <select id="getAll" resultType="com.oracle.vo.Book">
        select * from book
    select>
    <delete id="delete" parameterType="int">
        delete from book where isbn=#{isbn}
    delete>
mapper> 
  1. 测试:
package mybatisTest;
import java.io.IOException;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;

import com.oracle.dao.BookDao;
import com.oracle.dao.BookDaoImpl;
import com.oracle.vo.Book;
public class Test {

    @org.junit.Test
    public void test() throws IOException {
        BookDao dao=new BookDaoImpl();
//      Book book=new Book();
//      book.setBookName("深入了解java虚拟机");
//      book.setPrice(96);
//      dao.save(book);
//      System.out.println(book);
//      dao.delete(1);
        List list=dao.getAll();
        for (Book book : list) {
            System.out.println(book);
        }
    }

}

2.Dao接口+XML映射文件

要求:
    接口的名称与配置文件的namespace(命名空间)一致
    接口中方法名与配置文件中的id相对应  
    参数类型相同 
具体实现:创建满足上述条件的Dao接口以及XML映射文件,使用SqlSession提供的getMapper(Class arg0);由Mybatis自动创建具体的实现类
示例:
package mybatisTest;
import java.io.IOException;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;

import com.oracle.dao.BookDao;
import com.oracle.dao.BookDaoImpl;
import com.oracle.utils.SessionUtil;
import com.oracle.vo.Book;
public class Test {
    @org.junit.Test
    public void test() throws IOException {
        //获得session
        SqlSession session=SessionUtil.getSession();
        //通过session的getMapper方法,创建BookDao的实现类
        BookDao dao=session.getMapper(BookDao.class);
        Book book=new Book();
        book.setBookName("深入了解java虚拟机");
        book.setPrice(96);
        dao.save(book);
        session.commit();
        session.close();
        System.out.println(book);
    }
}

3. Dao接口+Annotation(仅用于简单的sql语句,复杂的sql使用该方式太繁琐,不易于维护)

具体实现:在Dao接口的方法上加入对应操作的Annotation,获得接口实现类的方法与Dao接口+映射文件方法相同(SqlSession 的getMapper()方法)
要求:需要使用配置文件(configuration.xml)中的子标记,name属性对应具有Annotation的接口的包名
    示例:``
示例: 
package com.oracle.dao;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;

import com.oracle.vo.Book;
public interface BookDao {
    /**
     * 插入一本图书
     * @param book
     */
    @Insert("insert into book(isbn,bookname,price) values(null,#{bookName},#{price})")
    public void save(Book book);
    /**
     * 根据isbn删除图书
     * @param isbn
     */
    @Delete("delete from book where isbn=#{isbn}")
    public void delete(Integer isbn);
    /**
     * 查询全部图书信息
     * @return
     */
    @Select("select * from book")
    public List getAll();
}

你可能感兴趣的:(javaEE,ssh)