最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis映射文件之常用標簽及特殊字符的處理方法

 更新時間:2023年05月06日 10:26:19   作者:會洗碗的CV工程師  
這篇文章主要介紹了Mybatis映射文件常用標簽及特殊字符的處理,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、Mybatis映射文件 — resultMap標簽

(1)新建一個Teacher類,如下

package com.mybatisstudy.pojo;
public class Teacher {
    private int id;
    private String teacherName;
    public Teacher(){
    }
    public Teacher(int id,String name){
        this.id = id;
        this.teacherName = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getTeacherName() {
        return teacherName;
    }
    public void setTeacherName(String teacherName) {
        this.teacherName = teacherName;
    }
    @Override
    public String toString() {
        return "Teacher[ " +
                "id=" + id +
                ", teacherName='" + teacherName + '\'' +
                " ]";
    }
}

數(shù)據(jù)庫里有如下記錄:

(2)新建一個TeacherMapper持久層接口

        并且新增一個查詢所有用戶方法

package com.mybatisstudy.mapper;
import com.mybatisstudy.pojo.Teacher;
import java.util.List;
public interface TeacherMapper {
    // 查詢所有記錄
    List<Teacher> findAll();
}

(3)新增TeacherMapper.xml  Mybatis映射文件

<?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.mybatisstudy.mapper.TeacherMapper">
    <select id="findAll" resultType="com.mybatisstudy.pojo.Teacher">
        select * from teacher
    </select>
</mapper>

(4)新增testTeacherMapper測試類

import com.mybatisstudy.mapper.TeacherMapper;
import com.mybatisstudy.pojo.Teacher;
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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.InputStream;
import java.util.List;
public class TestTeacherMapper {
    InputStream is = null;
    SqlSession session = null;
    TeacherMapper teacherMapper = null;
    //前置方法,不必重復代碼
    @Before
    public void before() throws Exception {
        System.out.println("前置方法執(zhí)行·············");
        // (1)讀取核心配置文件
        is = Resources.getResourceAsStream("SqlMapConfig.xml");
        // (2)創(chuàng)建SqlSessionFactoryBuilder對象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        // (3)SqlSessionFactoryBuilder對象獲取SqlSessionFactory對象
        SqlSessionFactory factory = builder.build(is);
        // (4)SqlSessionFactory對象獲取SqlSession對象
        session = factory.openSession();
        // (5)SqlSession對象獲取代理對象
        teacherMapper = session.getMapper(TeacherMapper.class);
    }
    //后置方法,釋放資源
    @After
    public void after() throws Exception {
        System.out.println("后置方法執(zhí)行·············");
        session.close();
        is.close();
    }
    // 測試查詢所有教師方法
    @Test
    public void testFindAll(){
        List<Teacher> teachers = teacherMapper.findAll();
        teachers.forEach(System.out::println);
    }
}

(5)運行結(jié)果

        哎呀,這是為什么呢,查詢有三條記錄后,但是我們的集合對象卻是為空, 原來是因為

MyBatis可以將數(shù)據(jù)庫結(jié)果集封裝到對象中,是因為結(jié)果集的列名和對象屬性名相同

當POJO屬性名和數(shù)據(jù)庫列名不一致時,MyBatis無法自動完成映射關(guān)系。

        那有什么好辦法可以解決呢?

        此時有兩種解決方案:

        ① Sql語句的查詢字段起與POJO屬性相同的別名。如下代碼

    <select id="findAll" resultType="com.mybatisstudy.pojo.Teacher">
        select tid id, tname teacherName from teacher
    </select>

測試結(jié)果:       

        OK,這次發(fā)現(xiàn)沒有問題了;

        ② 自定義映射關(guān)系: 

        在映射文件中,使用 <resultMap> 自定義映射關(guān)系;在 <select> 標簽中,使用 resultMap 屬性代替 resultType 屬性,使用自定義映射關(guān)系。 如下:

    <select id="findAll" resultMap="teacherMapper">
        select * from teacher
    </select>
    <resultMap id="teacherMapper" type="com.mybatisstudy.pojo.Teacher">
        <!-- id自定義主鍵列 properties:POJO屬性名 column:數(shù)據(jù)庫列名-->
        <id property="id" column="tid"></id>
        <!-- result定義普通列 property:POJO屬性名 column:數(shù)據(jù)庫列名-->
        <result property="teacherName" column="tname"></result>
    </resultMap>

測試結(jié)果:     

        OK,本次測試結(jié)果也是沒有問題的。 

二、Mybatis映射文件 — sql和include標簽

        <sql> 用來定義可重用的Sql片段,通過 <include> 引入該片段。如:Sql語句的查詢字段起與POJO屬性相同的別名,該Sql片段就可以重用。

(1)持久層新增根據(jù)Id查詢方法

// 根據(jù)ID查詢用戶
    Teacher findById(int id);

(2)映射文件新增相應標簽

    <sql id="selectAllField">
        select tid id,tname teacherName
    </sql>
    <select id="findById" resultType="com.mybatisstudy.pojo.Teacher">
        <include refid="selectAllField"></include>
        from teacher where tid=#{id}
    </select>

(3)測試類新增方法

// 測試根據(jù)ID查詢方法
    @Test
    public void testFindById(){
        int id = 3;
        Teacher teacher = teacherMapper.findById(id);
        System.out.println(teacher);
    }

(4)測試結(jié)果

        OK,本次測試也是非常成功的 

三、Mybatis映射文件 — 特殊字符處理

符號實體
<&lt;
>&gt;
&&amp;
'&apos;
"&quot;

(1)持久層新增查詢比輸入ID大的集合

// 查詢比輸入Id要大的記錄
    List<Teacher> findById2(int id);

(2)映射文件新增標簽

    <select id="findById2" resultType="com.mybatisstudy.pojo.Teacher">
        <include refid="selectAllField"></include>
        from teacher where tid &gt; #{id}
    </select>

(3)測試類新增測試方法

// 測試查詢比輸入Id大的記錄
    @Test
    public void testFindById2(){
        int id = 1;
        List<Teacher> teachers = teacherMapper.findById2(id);
        teachers.forEach(System.out::println);
    }

(4)運行結(jié)果 

        OK,確實查詢出了比id比1大的集合,本次實操也非常成功。 

到此這篇關(guān)于Mybatis映射文件 — 常用標簽及特殊字符的處理的文章就介紹到這了,更多相關(guān)Mybatis映射文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java中使用logger打印日志有哪些坑

    java中使用logger打印日志有哪些坑

    在Java中使用日志記錄器(Logger)打印日志時,確實存在一些常見的坑需要注意,本文就來介紹一下幾種方法,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • SpringBoot實現(xiàn)本地上傳文件到resources目錄

    SpringBoot實現(xiàn)本地上傳文件到resources目錄

    Java后端項目上傳文件是一個很常見的需求,這篇文章主要為大家介紹了SpringBoot如何實現(xiàn)本地上傳文件到resources目錄永久保存下載,需要的可以參考一下
    2023-07-07
  • 10道springboot常見面試題

    10道springboot常見面試題

    這篇文章主要為大家詳細介紹了10道springboot常見面試題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • springboot項目中引入本地依賴jar包并打包到lib文件夾中

    springboot項目中引入本地依賴jar包并打包到lib文件夾中

    這篇文章主要介紹了springboot項目中引入本地依賴jar包,如何打包到lib文件夾中,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Java中的substring()方法使用舉例詳解

    Java中的substring()方法使用舉例詳解

    這篇文章主要介紹了Java中的substring()方法使用的相關(guān)資料,文中包括其概述、參數(shù)、返回值、使用示例、注意事項、常見用法和總結(jié),通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-12-12
  • 使用Thrift實現(xiàn)跨語言RPC的調(diào)用

    使用Thrift實現(xiàn)跨語言RPC的調(diào)用

    Thrift最大的優(yōu)勢就是可以實現(xiàn)跨語言RPC調(diào)用,尤其在一些大廠,微服務各模塊之間使用不同的語言是很常見的,本文就將使用java作為服務端,用python作為客戶端,實現(xiàn)不同語言之間的RPC調(diào)用,需要的可以參考下
    2023-10-10
  • Idea公司真牛逼發(fā)行最適合程序員編程字體

    Idea公司真牛逼發(fā)行最適合程序員編程字體

    JetBrains年初的時候推出了一種新字體,即JetBrains Mono,它是專為開發(fā)人員設計的,非常不錯,喜歡的朋友快來體驗吧
    2020-12-12
  • java編程ThreadLocal上下傳遞源碼解析

    java編程ThreadLocal上下傳遞源碼解析

    這篇文章主要為大家介紹了java編程中ThreadLocal提供的上下傳遞方式的源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • java文件上傳技術(shù)深入剖析

    java文件上傳技術(shù)深入剖析

    這篇文章主要為大家詳細介紹了java文件上傳技術(shù)深入剖析,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Java與Node.js利用AES加密解密出相同結(jié)果的方法示例

    Java與Node.js利用AES加密解密出相同結(jié)果的方法示例

    這篇文章主要介紹了Java與Node.js利用AES加密解密出相同結(jié)果的方法,文中給出了詳細的示例代碼,相信對大家的學習或者工作能帶來一定的幫助,需要的朋友們下面來一起看看吧。
    2017-02-02

最新評論

中山市| 罗定市| 常山县| 绿春县| 濉溪县| 大渡口区| 浙江省| 济源市| 大邑县| 东阿县| 金溪县| 郯城县| 麻城市| 宁夏| 伊金霍洛旗| 喀什市| 梓潼县| 南江县| 卢湾区| 江川县| 新蔡县| 新宾| 蒙山县| 东乡族自治县| 科尔| 连云港市| 延长县| 宜城市| 龙陵县| 新平| 宜良县| 镶黄旗| 赤壁市| 浦北县| 江川县| 阿克陶县| 金坛市| 余江县| 乐昌市| 洛川县| 彭山县|