通過mapper包的配置將xml與介面繫結實現查詢
阿新 • • 發佈:2018-12-20
- 配置檔案中 在標籤中配置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>
- 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介面
- 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對應。
- 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中,方便修改。