1. 程式人生 > >mybatis mapper代理學習筆記

mybatis mapper代理學習筆記

sqlMapConfig.xml的配置

<?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>

    <!-- 載入屬性檔案 -->
    <properties resource="db.properties">
        <!-- 可以配置屬性名和屬性值,這裡的屬性首先被讀取,然後會讀取屬性檔案
            ,同名屬性會覆蓋,最後讀取parameterType傳遞的屬性
        -->
</properties> <!-- 別名 --> <typeAliases> <!-- 單個別名 --> <!--<typeAlias type="jack.po.User" alias="user"/> --> <!-- 批量別名定義 指定包名,mybatis會自動掃描包中的po類,自動定義別名 別名是類名(首字母大寫或者小寫都可) --> <package
name="jack.po"/>
<package name="jack.pojo"/> </typeAliases> <environments default="development"> <environment id="development"> <!-- 由mybatis控制事務 --> <transactionManager type="JDBC"/> <!-- 由mybatis控制連線池 -->
<dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <mappers> <!-- <mapper resource="sqlmap/User.xml"/> --> <!--<mapper resource="mapper/UserMapper.xml"/> --> <!-- 通過mapper介面載入對映檔案 需要將mapper介面的名字和mapper.xml的檔案保持一致 且在一個目錄 前提上:使用的mapper代理的方式 --> <!-- <mapper class="jack.user.mapper.UserMapper"/> --> <!-- 批量載入mapper,自動掃描包下的mapper --> <package name="jack.employee.mapper"/> </mappers> </configuration>

使用mapper代理有以下要求:

1.對映檔案的namespace是介面的全路徑
2.方法名和配置檔案的statement的id對應
3.返回值型別和resulttype對應
4.引數型別和parameterType對應

先來寫EmployeeMapper.xml配置檔案

<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespance是介面的全路徑 -->
 <mapper namespace="jack.employee.mapper.EmployeeMapper">

    <!-- id和介面的方法名稱一致
        parameterType和輸入引數一致
        resultType和返回值一致
     -->
    <select id="getEmployeeById" parameterType="int" resultType="employee">
        select * from t_employee where id=#{id}
    </select>
    <insert id="insertToEmployee" parameterType="jack.pojo.Employee">
        insert into t_employee(name,birthday,sex,address) values(#{name},#{birthday},#{sex},#{address})
    </insert>
    <select id="getEmployeeByName" parameterType="String" resultType="employee">
        select * from t_employee where name like '%${value}%'
    </select>
    <select id="getEmloyee" parameterType="employee" resultType="employee">
        select e.name name_,e.birthday bir_ from t_employee e where e.name like '%${name}%' and e.sex=#{sex}
    </select>
    <select id="getEmloyee2" parameterType="employee" resultMap="employeeResMap">
        select e.name name_,e.birthday bir_ from t_employee e where e.name like '%${name}%' and e.sex=#{sex}
    </select>
    <resultMap type="employee" id="employeeResMap">
        <result column="name_" property="name"/>
        <result column="bir_" property="birthday"/>
    </resultMap>
 </mapper>

下面是EmployeeMapper介面程式碼:

package jack.employee.mapper;

import java.util.List;

import jack.pojo.Employee;

public interface EmployeeMapper {

    /**
     * 按照員工id查詢員工
     * */
    public Employee getEmployeeById(Integer id);

    /**
     * 插入一條員工記錄
     * */
    public void insertToEmployee(Employee employee);

    /**
     * 按照名稱模糊查詢
     * */
    public List<Employee> getEmployeeByName(String name);

    /**
     * 高階搜尋
     * */
    public List<Employee> getEmloyee(Employee employee);

    public List<Employee> getEmloyee2(Employee employee);
}

mybatis會自動幫我們生成實現類,代理物件,可以自己列印mapper物件看一下
測試程式碼如下:

package jack.employee.mapper;

import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import jack.pojo.Employee;

public class EmployeeMapperTest {

    private SqlSessionFactory factory;

    @Before
    public void setUp() throws Exception {
        InputStream stream = Resources.getResourceAsStream("sqlMapConfig.xml");
        factory = new SqlSessionFactoryBuilder().build(stream);
    }


    @Test
    public void testGetEmployeeById() {
        /*mapper**/
        SqlSession session = factory.openSession();
        EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
        Employee e = mapper.getEmployeeById(1);
        System.out.println(e);
    }
}

相關推薦

mybatis mapper代理學習筆記

sqlMapConfig.xml的配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config

Mybatis進階學習筆記——動態代理方式開發Dao介面、Dao層(推薦第二種)

1.原始方法開發Dao  Dao介面 1 package cn.sm1234.dao; 2 3 import java.util.List; 4 5 import cn.sm1234.domain.Customer; 6 7 public interface Custo

mybatis-動態刪除學習筆記

mybatis-動態刪除學習筆記java import java.util.ArrayList; import java.util.List; import org.apache.ibatis.session.SqlSession; import cn.itcast.javaee.mybatis.uti

mybatis-動態查詢學習筆記

mybatis-動態查詢 import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.apache.ibatis.session.SqlSession; import cn.itcast.j

java反射之動態代理學習筆記

ace ins 功能 運行 invoke -- ram lang glib 動態代理概述:代理:本來自己做的事情,請別人來做,被請的人就是代理對象;舉例:春節回家買票讓人代理買動態代理:在程序運行過程中產生的這個對象,而程序運行過程中產生對象其實就是我們剛才反射講解的內容,

mybatis動態代理學習感悟

目的:最近學習了mybatis框架的使用,所以寫個部落格用來記錄mybatis動態代理學習中的問題以及感悟,本部落格中的專案是基於mybatis動態代理高階查詢的demo 對應的sql語句也放在了resources目錄下:專案地址 目錄 一、為什麼我們要使用mybatis?

mybatis mapper代理方法開發dao

UserMapper.xml中namespace的值要與mapper.java的完全限定地址一樣 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.or

Mybatis進階學習筆記——輸入對映

1.輸入對映 輸入對映支援的型別: 1) 基本的型別,int,String,double 等(*)2) JavaBean 型別(*)3) 包裝JavaBean 型別(物件裡面包含另一個物件) 1.1基本型別 1 <insert id="testParameterType" paramete

Mybatis進階學習筆記——輸出對映

輸出對映(例如一個方法的返回至使用什麼型別去接收) 1.基本型別 1 <!-- 統計記錄數 --> 2 <select id="queryTotalCount" resultType="long"> 3 SELECT COUNT(*) FROM

Mybatis進階學習筆記——輸出映射

字段 str integer ima println myba get 實現類 動態代理 輸出映射(例如一個方法的返回至使用什麽類型去接收) 1.基本類型 1 <!-- 統計記錄數 --> 2 <select id="queryTotal

Mybatis進階學習筆記——動態sql

1.if標籤 1 <select id="queryByNameAndTelephone" parameterType="Customer" 2 resultType="Customer"> 3 SELECT * FROM t_customer

Mybatis進階學習筆記——關係查詢——一對一查詢

使用者和訂單的需求 通過查詢訂單,查詢使用者,就是一對一查詢 (1)自定義JavaBean(常用,推薦使用) 1 <select id="queryOrderUser" resultType="OrderUser"> 2 SELECT o.id,o.user_i

Mybatis進階學習筆記——關係查詢——一對多查詢

一個客戶擁有多個訂單 1 <resultMap type="User" id="UserOrderResultMap"> 2 <id column="id" property="id"/> 3 <result column="

java-動態代理學習筆記

代理模式 給某個物件提供一個代理物件,並由代理物件控制對於原物件的訪問,即客戶不直接操控原物件,而是通過代理物件間接地操控原物件。 其中代理可以分為兩種方式,分別是靜態代理和動態代理 靜態代理 大概的思想就是如果我想建立一個對Re

Mybatis Mapper代理開發規範

程式設計師需要編寫mapper.xml 編寫mapper介面需要遵循一些開發規範,這樣MyBatis就可以自動生成mapper介面實現類代理物件。 規範如下: 1、在mapper.xml中namespace等於mapper介面地址 <mapper

Spring整合MybatisMapper代理開發

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springf

Mybatis Mapper代理的開發方式

1.Mapper代理的開發方式 使用Mybatis開發Dao,通常有兩個方法,即原始Dao開發方法和Mapper介面開發方法。mybatis在進行dao開發的時候,涉及到三姐妹,分別是SqlSessionFactoryBuilder、SqlSessionFactroy、

Mybatis 學習筆記(三)——使用Mapper代理的方式實現資料增刪改查

一、介紹   Mapper代理的方式只需要程式設計師編寫 Mapper.xml 檔案及 Mapper介面。   本文是基於上一篇文章:Mybatis 學習筆記——原生DAO實現資料增刪改查,所以接下來的內容是以其為基礎的,如果有什麼不懂的請留言或檢視上一篇。所

Mybatis學習筆記(五)--mapper動態代理

Mapper介紹 Mapper介面開發方法只需要程式設計師編寫Mapper介面(相當於Dao介面),由Mybatis框架根據介面定義建立介面的動態代理物件,代理物件的方法體同上邊Dao介面實現類方法。   Mapper介面開發需要遵循以下規範: Mapper.xm

Spring+SpringMVC+MyBatis深入學習及搭建(二)——MyBatis原始Dao開發和mapper代理開發

oid 方法註入 內部 需要 com 配置文件信息 lec lang auth 前面有寫到Spring+SpringMVC+MyBatis深入學習及搭建(一)——MyBatis的基礎知識。MybatisFirst中存在大量重復的代碼。這次簡化下代碼: 使用MyBatis開發