您的位置:首页 > 其它

MyBatis中resultMap和parameterMap的使用

2017-09-15 20:57 411 查看
当实体类中的属性和数据库中的字段对应是,我们使用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();

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: