欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mybatis實(shí)現(xiàn)mapper代理模式的方式

 更新時(shí)間:2021年06月22日 10:07:05   作者:小劉-魚(yú)皮  
本文向大家講解mybatis的mapper代理模式,以根據(jù)ide值查詢(xún)單條數(shù)據(jù)為例編寫(xiě)xml文件,通過(guò)mapper代理的方式進(jìn)行講解增刪改查,分步驟給大家講解的很詳細(xì),對(duì)mybatis mapper代理模式相關(guān)知識(shí)感興趣的朋友一起看看吧

今晚繼續(xù)復(fù)習(xí)mybtis
以根據(jù)id值查詢(xún)單條數(shù)據(jù)為例
編寫(xiě)SqlMapConfig.xml文件

<configuration> 
<!-- 使用mybatis需要的數(shù)據(jù)源和事務(wù)配置,后續(xù)如果整合spring之后,將不再需要 --> 
<environments default="development"> 
<!-- 配置數(shù)據(jù)源和事務(wù) --> 
<environment id="development"> 
<!-- 配置事務(wù)管理,將事務(wù)管理交給mybatis管理 --> <transactionManager type="JDBC" /> 
<!-- 配置數(shù)據(jù)源 --> 
<dataSource type="POOLED">
 <property name = "driver" value = "com.mysql.jdbc.Driver" /> 
 <property name="url" value="jdbc:mysql://localhost:3306/db_shop? useUnicode=true&amp;characterEncoding=utf-8"/>
  <property name="username" value="root"/> <property name="password" value=""/>
   </dataSource>
    </environment> 
    </environments>
     <!-- 加載**.xml配置文件 --> 
     <mappers> 
     <mapper resource="product.xml"/>
</mappers> 
</configuration>

編寫(xiě)失血模型對(duì)象:Product,最好字段名和數(shù)據(jù)庫(kù)里面的字段名一直

/**** <p>Title: Product</p> * 
<p>Description: 商品類(lèi)失血模型</p> *
 @author Alon *
  @date 2020年9月27日 下午6:51:57 
  * @version 1.0 */ 
 public class Product {
  private int p_id;
   private String name; 
   private int p_number;
    private double price; 
    private String add_time;
     public Product(int p_id, String name, int p_number, double price, String add_time) { 
     super();
      this.p_id = p_id; 
      this.name = name; 
      this.p_number = p_number; 
      this.price = price; 
      this.add_time = add_time; 
      }public Product() { 
        super();
       }
       public int getP_id() { 
       return p_id; }
       public void setP_id(int p_id) { 
       this.p_id = p_id; }public String getName() { return name; }
       public void setName(String name) { this.name = name; }
       public int getP_number() { 
       return p_number; }
       public void setP_number(int p_number) { this.p_number = p_number; }
       public double getPrice() { return price; }
       public void setPrice(double price) { this.price = price; }
       public String getAdd_time() { return add_time;
}
public void setAdd_time(String add_time) { this.add_time = add_time; }
@Override 
public String toString() { 
return "Product [p_id=" + p_id + ", name=" + name + ", p_number=" + p_number + ", price=" + price + ", add_time=" + add_time + "]"; } }

編寫(xiě)單個(gè)映射關(guān)系的sql.xml:product.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文件 namespace:命名空間,可以理解成將部分的sql語(yǔ)句進(jìn)行隔離。到后面的mapper代理方式將有更 加重要的作用 --> <mapper namespace="test"> 
 <!--select:表示要執(zhí)行的查詢(xún)語(yǔ)句 id:給這個(gè)查詢(xún)語(yǔ)句取一個(gè)名字,唯一的,java中要調(diào)用的使用。
  parameterType:輸入?yún)?shù)的數(shù)據(jù)類(lèi)型 
  resultType:輸出參數(shù)的數(shù)據(jù)類(lèi)型,一般綁定成model的對(duì)象 #{value}:表示用來(lái)和占位符一樣,用來(lái)接受輸入的參數(shù)值。 --> <select id="findById" parameterType="java.lang.Integer" resultType="com.woniuxy.model.Product">
   SELECT * FROM t_product WHERE p_id = #{value}
    </select>
     </mapper>

編寫(xiě)java代碼進(jìn)行測(cè)試執(zhí)行sql語(yǔ)句并得到結(jié)果

/**** <p>Title: MybatisDemo1</p> *
 <p>Description: 查詢(xún)數(shù)據(jù)的demo</p> *
  @author Alon 
  * @date 2020年9月27日 下午7:05:32 
  * * @version 1.0 */ 
  * public class MybatisDemo1 {
  *  public static void main(String[] args) throws IOException { 
  * new MybatisDemo1().queryById(); }
  * public void queryById() throws IOException {
  *  //1、讀取到SqlMapConfig.xml文件的流 String path = "SqlMapConfig.xml"; 
  * InputStream config = Resources.getResourceAsStream(path);
//創(chuàng)建會(huì)話工廠,同時(shí)將SqlMapConfig.xml里面的數(shù)據(jù)放到工廠中 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); 
//開(kāi)啟會(huì)話 SqlSession sqlSession = factory.openSession(); /** 第一個(gè)參數(shù):要執(zhí)行哪個(gè)sql語(yǔ)句的參數(shù),一般命名空間.id值 * 第二個(gè)參數(shù):傳入填充#{value}的傳入?yún)?shù)值。 */ 
Object obj = sqlSession.selectOne("test.findById", 1); System.out.println(obj); } }

進(jìn)行模糊查詢(xún):查詢(xún)出多條結(jié)果集

<!-- 在原有的xml文件中進(jìn)行配置即可,不需要新建,之前的也已經(jīng)在SqlMapConfig.xml文件中進(jìn)行了配 置 --> <select id="queryByName" parameterType="java.lang.String" resultType="com.woniuxy.model.Product"> SELECT * FROM t_product WHERE name like "%${value}%" </select> public void queryByName() throws Exception
{
 String path = "SqlMapConfig.xml"; //獲取流對(duì)象 InputStream config = Resources.getResourceAsStream(path); //獲取會(huì)話工廠 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); //開(kāi)啟會(huì)話 SqlSession sqlSession = factory.openSession(); /** 因?yàn)閳?zhí)行結(jié)果有多條語(yǔ)句,那么必須使用selectList */ List<Object> list = sqlSession.selectList("test.queryByName", "旺仔"); //迭代 System.out.println(list); 
}

新增語(yǔ)句

<!-- 新增一條數(shù)據(jù) parameterType:傳入?yún)?shù)的數(shù)據(jù)類(lèi)型,用失血模型對(duì)象即可。 --> 
<insert id="insertProduct" parameterType="com.woniuxy.model.Product"> 
INSERT INTO t_product(name,p_number,price) value(#{name},#{p_number},# {price}); 
</insert>
/**
**<p>Title: insert</p> 
*<p>Description: 新增數(shù)據(jù)</p> 
* @throws Exception 
* */ public void insert() throws Exception{ String path = "SqlMapConfig.xml"; 
* //獲取流對(duì)象 
* InputStream config = Resources.getResourceAsStream(path); //獲取會(huì)話工廠
*  SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); 
* //開(kāi)啟會(huì)話 
* SqlSession sqlSession = factory.openSession();
*  Product prod = new Product();
*  prod.setName("雪碧"); 
* prod.setP_number(10); 
* prod.setPrice(3.0);
*  int row = sqlSession.insert("test.insertProduct", prod); System.out.println(row); sqlSession.commit(); sqlSession.close(); }

mapper代理的方式進(jìn)行講解增、刪、改、查(重點(diǎn))
步驟1:創(chuàng)建對(duì)應(yīng)的Mapper接口,和之前的dao接口一致
步驟2:編寫(xiě)對(duì)應(yīng)的xxmapper.xml配置文件。有要求
1)mapper標(biāo)簽里面的namespace:必須寫(xiě)成對(duì)應(yīng)的Mapper接口的全路徑名
2)sql語(yǔ)句里面的id:必須和接口中對(duì)應(yīng)方法的名稱(chēng)一致。
3)sql語(yǔ)句里面的parameterType:必須要和接口中方法的形式參數(shù)數(shù)據(jù)類(lèi)型一致
4)sql語(yǔ)句里面的resultType:必須和接口中方法的返回值數(shù)據(jù)類(lèi)型一致
步驟3:將編寫(xiě)好的**mapper.xml文件在SqlMapConfig.xml文件中加載
步驟4:編寫(xiě)實(shí)現(xiàn)類(lèi),并在這里直接測(cè)試
別名和mapper映射詳解
設(shè)置別名
在mybatis配置文件中,別名是一直存在的,實(shí)際上在框架中已經(jīng)存在一些默認(rèn)的別名。比如
java.lang.String對(duì)應(yīng)的別名:String,java.lang.Integer對(duì)應(yīng)的別名:int
在開(kāi)發(fā)中,一般mapper.xml配置文件中的parameterType和resultType往往對(duì)應(yīng)的名稱(chēng)需要寫(xiě)上
model的全路徑,而且還是多次被重復(fù)使用,可以選擇給該路徑取一個(gè)別名。用別名來(lái)替換比較復(fù)雜的
全路徑名
以掃描包的形式進(jìn)行配置
自定義的POJO類(lèi)(重點(diǎn))
自定義POJO類(lèi),一般指的是高級(jí)查詢(xún),在想要的數(shù)據(jù)和傳入的條件不再一張表中,通過(guò)表所創(chuàng)建的失血
模型model已經(jīng)不能夠滿(mǎn)足傳入?yún)?shù)的需求了,這個(gè)時(shí)候,就需要使用自定義的POJO類(lèi)
因?yàn)橐粋€(gè)失血模型已經(jīng)不能夠滿(mǎn)足查詢(xún)輸入?yún)?shù)的要求了,所以進(jìn)行擴(kuò)展,創(chuàng)建一個(gè)UserCustom類(lèi),里
面包含user對(duì)象聲明和userInfo對(duì)象聲明

以上就是mybatis實(shí)現(xiàn)mapper代理模式的方式的詳細(xì)內(nèi)容,更多關(guān)于mybatis mapper代理模式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot?2.5.5整合輕量級(jí)的分布式日志標(biāo)記追蹤神器TLog的詳細(xì)過(guò)程

    SpringBoot?2.5.5整合輕量級(jí)的分布式日志標(biāo)記追蹤神器TLog的詳細(xì)過(guò)程

    分布式追蹤系統(tǒng)是一個(gè)最終的解決方案,如果您的公司已經(jīng)上了分布式追蹤系統(tǒng),這篇文章主要介紹了SpringBoot?2.5.5整合輕量級(jí)的分布式日志標(biāo)記追蹤神器TLog,需要的朋友可以參考下
    2022-10-10
  • java快速排序和選擇排序?qū)崿F(xiàn)實(shí)例解析

    java快速排序和選擇排序?qū)崿F(xiàn)實(shí)例解析

    這篇文章主要為大家介紹了java快速排序和選擇排序?qū)崿F(xiàn)實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Java基于二叉查找樹(shù)實(shí)現(xiàn)排序功能示例

    Java基于二叉查找樹(shù)實(shí)現(xiàn)排序功能示例

    這篇文章主要介紹了Java基于二叉查找樹(shù)實(shí)現(xiàn)排序功能,結(jié)合實(shí)例形式分析了Java二叉查找樹(shù)的定義、遍歷及排序等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • Java中的JVM虛擬機(jī)內(nèi)存分配詳解

    Java中的JVM虛擬機(jī)內(nèi)存分配詳解

    這篇文章主要介紹了Java中的JVM虛擬機(jī)內(nèi)存分配詳解,虛擬機(jī)是一種能夠執(zhí)行 Java 字節(jié)碼的虛擬機(jī),它是 Java 語(yǔ)言的核心組成部分,負(fù)責(zé)將 Java 代碼轉(zhuǎn)換為機(jī)器碼并執(zhí)行,JVM 提供了內(nèi)存管理、垃圾回收、線程管理等功能,需要的朋友可以參考下
    2023-10-10
  • MyBatis 多個(gè)條件使用Map傳遞參數(shù)進(jìn)行批量刪除方式

    MyBatis 多個(gè)條件使用Map傳遞參數(shù)進(jìn)行批量刪除方式

    這篇文章主要介紹了MyBatis 多個(gè)條件使用Map傳遞參數(shù)進(jìn)行批量刪除方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • mybatis多對(duì)多查詢(xún)的實(shí)現(xiàn)(xml方式和注解方式)

    mybatis多對(duì)多查詢(xún)的實(shí)現(xiàn)(xml方式和注解方式)

    本文主要介紹了mybatis多對(duì)多查詢(xún)的實(shí)現(xiàn),有xml方式和注解方式兩種,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Java反射之靜態(tài)加載和動(dòng)態(tài)加載的簡(jiǎn)單實(shí)例

    Java反射之靜態(tài)加載和動(dòng)態(tài)加載的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇Java反射之靜態(tài)加載和動(dòng)態(tài)加載的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • Java I/O 操作及優(yōu)化詳細(xì)介紹

    Java I/O 操作及優(yōu)化詳細(xì)介紹

    這篇文章主要介紹了Java I/O 操作及優(yōu)化詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • SpringBoot整合MybatisSQL過(guò)濾@Intercepts的實(shí)現(xiàn)

    SpringBoot整合MybatisSQL過(guò)濾@Intercepts的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot整合MybatisSQL過(guò)濾@Intercepts的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Spring整合Mybatis的全過(guò)程

    Spring整合Mybatis的全過(guò)程

    這篇文章主要介紹了Spring整合Mybatis的全過(guò)程,包括spring配置文件書(shū)寫(xiě)映射器接口的實(shí)例代碼,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-06-06

最新評(píng)論