MYBATIS中resultMap和parameterMap的使用

来源:互联网 发布:作弊神器软件下载 编辑:程序博客网 时间:2024/06/05 06:45

当实体类中的属性和数据库中的字段对应是,我们使用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文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- Sql映射  | namespce:唯一标识当前此映射文件 -->
<mapper namespace="my.BookManage">
 
 <!-- 将JAVA实体类中的属性和表中的字段进行对应 
  column:数据库中的列
  property:对应的实体类中的属性
 -->
 <resultMap type="Book.dao.Book" id="BookResultMap">
  <id column="id" property="id"/>
  <result column="name" property="bookName"/>
  <result column="price" property="bookPrice"/>
 </resultMap>
 
 <!-- resultMap:resultMap的id ,bookName:resultMap的property,即实体类中的属性 -->
 <parameterMap type="Book.dao.Book" id="BookParameterMap">
  <parameter property="bookName" resultMap="BookResultMap" />  
  <parameter property="bookPrice" resultMap="BookResultMap" />  
 </parameterMap>

 <select id="selectAll" resultMap="BookResultMap">
  select * from BOOK_MANAGE
 </select>
 
 <!-- 根据ID查询Book -->
 <select id="selectBookById" parameterType="int" resultMap="BookResultMap">
  select * from BOOK_MANAGE 
   where 
  id=#{id}
 </select>
 
 <!-- 根据ID删除Book -->
 <delete id="deleteBookById" parameterType="Book.dao.Book"> 
  delete from BOOK_MANAGE 
   where 
  id=#{id}
 </delete>
 
 <!-- 保存一个Book -->
 <insert id="saveBook" parameterMap="BookParameterMap">
  insert into BOOK_MANAGE
   (ID,NAME,PRICE)
    values
   (Bookmanage_Seq.Nextval,#{bookName},#{bookPrice})
 </insert>
 
 <!-- 根据ID修改Book -->
 <update id="updatePersnById" parameterMap="BookParameterMap">
  update BOOK_MANAGE 
   set 
    NAME=#{bookName},
    PRICE=#{bookPrice}
   WHERE id=#{id}
 </update>
</mapper>

 

接下来就是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<Book> 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();
 }

}


出自:http://blog.csdn.net/aquarius_gamus/article/details/37704615


0 0
原创粉丝点击