1. 程式人生 > >通過mapper包的配置將xml與介面繫結實現查詢

通過mapper包的配置將xml與介面繫結實現查詢

  1. 配置檔案中 在標籤中配置package,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
	<setting name="cacheEnabled" value="true"/>
</settings>

	<typeAliases>
		<package name="com.ss.model"/>
	</typeAliases>
  <environments default="dev">
  	<environment id="dev">
  		<transactionManager type="JDBC"/>
  		<dataSource type="com.ss.datasource.C3P0DataSource"/>
  	</environment>
  </environments>
  <mappers>
  	<package name="com.ss.mapper"/>		<!-- mapper包名 -->
  </mappers>
</configuration>
  1. xxxMapper.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">
<mapper namespace="com.ss.mapper.BookMapper">

	<sql id="bookValues">
		#{bookId},#{bookName},#{bookAuthor},#{bookPrice},#{bookKind},#{totalStore},#{totalSold},#{bookPic},#{bookProfile},#{bookStatus}
	</sql>
	
	<sql id="bookValues1">
		(#{book.bookId},#{book.bookName},#{book.bookAuthor},#{book.bookPrice},#{book.bookKind},#{book.totalStore},#{book.totalSold},#{book.bookPic},#{book.bookProfile},#{book.bookStatus})
	</sql>
	
	<select id="getBookByBookId" resultMap="bookResultMap">
		select<include refid="bookColumns"/>
		from t_book
		where book_id = #{bookId}
	</select>
	
	
	
	<resultMap type="book" id="bookResultMap">
		<id property="id" column="primary_id"/>
		<result property="bookId" column="book_id"/>
		<result property="bookName" column="book_name"/>
		<result property="bookAuthor" column="book_author"/>
		<result property="bookPrice" column="book_price"/>
		<result property="bookKind" column="book_kind"/>
		<result property="totalStore" column="total_store"/>
		<result property="totalSold" column="total_sold"/>
		<result property="bookPic" column="book_pic"/>
		<result property="bookProfile" column="book_profile"/>
		<result property="bookStatus" column="book_status"/>
		<!-- <association property="bookInfo" column="book_id" select="com.ss.mapper.BookInfoMapper">
			<id/>
			<result/>
		</association> -->
	</resultMap>
	<sql id="bookColumns">
		primary_id,book_id,book_name,book_author,book_price,book_kind,total_store,total_sold,book_pic,book_profile,book_status
	</sql>
	
	
	
	
</mapper>  

關鍵是namespace中要對應mapper介面

  1. mapper介面中
package com.ss.mapper;

import java.util.List;

import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.UpdateProvider;
import org.apache.ibatis.cache.decorators.FifoCache;

import com.ss.model.Book;
public interface BookMapper {
	public Book getBookByBookId(Long bookId);
}

注意:介面中的方法名要與xml中的id對應。

  1. dao層
package com.ss.dao;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;

import com.ss.mapper.BookMapper;
import com.ss.model.Book;
import com.ss.util.SqlSessionFactorySingleTon;
public class BookDao {
	@Test
	public void testOneToOne(){
		SqlSessionFactory sessionfactory = SqlSessionFactorySingleTon.getInstance().getSqlSessionFactory();
		SqlSession session = sessionfactory.openSession(true);
		BookMapper mapper = session.getMapper(BookMapper.class);
		Book book = mapper.getBookByBookId(125L);			//在此呼叫介面的方法,傳入引數
		System.out.println(book);
		session.close();
		
	}
	
}

查詢語句較為複雜而且常常需要修改,所以通過這種方法將查詢語句分離到xml中,方便修改。