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整合Mybatis—Mapper代理開發
<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開發