MYBATIS中resultMap和parameterMap的使用

当实体类中的属性和数据库中的字段对应是,我们使用resultType和parameterType就可以完成CRUD;

当实体类中的属性和数据库中的字段不对应时,就要用resultMap和parameterMap了。

 

下面的代码是一个Book实体类 和 BOOK_MANAGE数据库,他们的字段是不对应的,以下是用resultMap和parameterMap进行的CRUD操作。

查询时,我们需要返回类型,即用resultMap;

增改删时,我们需要参数类型,即用parameterMap;(这里的删除是根据id删除,实体类和数据库对应的,所以用parameterType效果也一样。)

 

实体类:

public class Book {
 private int id;
 private String bookName;
 private double bookPrice;

(.....省略get set 方法)
}

 

BookSql.xml文件:


PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">



 
 
 
  
  
  
 

 
 
 
    
    
 

 
 
 
 
 
 
 
  delete from BOOK_MANAGE
   where
  id=#{id}
 

 
 
 
  insert into BOOK_MANAGE
   (ID,NAME,PRICE)
    values
   (Bookmanage_Seq.Nextval,#{bookName},#{bookPrice})
 

 
 
 
  update BOOK_MANAGE
   set
    NAME=#{bookName},
    PRICE=#{bookPrice}
   WHERE id=#{id}
 

 

接下来就是servive调用了:

public class BookService {
 /**
  * 准备工作,获得SqlSessionFactoryBean对象
  * @return
  * @throws Exception
  * @throws Exception
  */
 SqlSessionFactory sqlSessionFactory;
 public void init() throws Exception{
  String resource = "sqlMapConfig.xml";
  InputStream in = Resources.getResourceAsStream(resource);
  sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
 }
 
 /**
  * 查询所有Book
  * @throws Exception
  */
 @Test
 public void selectAll() throws Exception{
  init();
  SqlSession session = sqlSessionFactory.openSession();
  List list = session.selectList("my.BookManage.selectAll");
  session.close();
  for (Iterator iterator = list.iterator(); iterator.hasNext();) {
   Book p = (Book) iterator.next();
   System.out.println(p);
  }
 }
 
 /**
  * 根据ID查询Book
  * @throws Exception
  */
 @Test
 public void selectBookByID() throws Exception{
  init();
  SqlSession session = sqlSessionFactory.openSession();
  Book book = session.selectOne("my.BookManage.selectBookById",3);
  session.close();
  System.out.println(book);
 
 }
 
 /**
  * 根据ID删除Book
  * @throws Exception
  */
 @Test
 public void deleteBookByID() throws Exception{
  init();
  SqlSession session = sqlSessionFactory.openSession();
  int i = session.delete("my.BookManage.deleteBookById",3);
  System.out.println(i);
  //对数据库数据会造成影响的,需要commit
  session.commit();
  session.close();
 
 }
 
 /**
  * 保存一个Book
  * @throws Exception
  */
 @Test
 public void saveBook() throws Exception{
  init();
  SqlSession session = sqlSessionFactory.openSession();
  Book b =new Book();
  b.setBookName("BookC");
  b.setBookPrice(15.0);
  int i = session.insert("my.BookManage.saveBook", b);
  System.out.println("插入了"+i+"条数据");
  session.commit();
  session.close();
 }
 

 /**
  * 根据Id修改一个Book
  * @throws Exception
  */
 @Test
 public void updateBookById() throws Exception{
  init();
  SqlSession session = sqlSessionFactory.openSession();
  Book b =new Book();
  b.setBookName("BookB");
  b.setBookPrice(20.0);
  b.setId(3);
  int i = session.update("my.BookManage.updatePersnById",b);
  System.out.println("修改了"+i+"条数据");
  session.commit();
  session.close();
 }
}


 

 

你可能感兴趣的:(javaEE)