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

mybatis簡單resultMap使用詳解

 更新時間:2021年04月27日 09:00:36   作者:Splay_Tree  
resultMap是Mybatis最強大的元素,它可以將查詢到的復(fù)雜數(shù)據(jù)(比如查詢到幾個表中數(shù)據(jù))映射到一個結(jié)果集當中。這篇文章主要介紹了mybatis簡單resultMap使用詳解的相關(guān)資料,需要的朋友可以參考下

Mybatis的介紹以及使用:http://www.mybatis.org/mybatis-3/zh/index.html

mybatis是一個半自動的ORM(Object Relational Mapping)框架,需要手動配置一些SQL語句或者注解,相對來說Mybatis留給程序員操作的空間靈活度更高,通常需要手動配置一些東西完成OR映射。當數(shù)據(jù)庫表中的字段 和 POJO實體類不匹配時,這是就需要程序員手動完成字段的映射。

mybatis-config.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"/>

    <settings>			<!-- 使用日志進行幫忙查看 -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>

    <typeAliases>		<!-- 取個別名 -->
        <typeAlias type="com.pojo.User" alias="user"/>
    </typeAliases>

    <environments default="development">

        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
        
    </environments>
    <mappers>
        <mapper resource="com/dao/UserMapper.xml"/>
    </mappers>
</configuration>

mybatisUtil加載工具類

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 java.io.IOException;
import java.io.InputStream;

public class mybatisUtil {
    private static SqlSessionFactory sqlSessionFactory = null;
    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream in = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlsession(){
        return sqlSessionFactory.openSession();
    }
}

POJO實體類User,為了方便簡單實用Lombok注解,減少一些代碼。

在這里插入圖片描述

package com.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data                           //各種get / set方法  Tostring...
@AllArgsConstructor             //全參構(gòu)造
@NoArgsConstructor              //無參構(gòu)造
public class User {
    private int id;						//對應(yīng)數(shù)據(jù)庫中的id
    private String username;			//對應(yīng)數(shù)據(jù)庫中的name
    private String password;			//對應(yīng)數(shù)據(jù)庫中的pwd
}

接口方法與對應(yīng)的xml配置文件

package com.dao;

import com.pojo.User;
import java.util.List;

public interface UserMapper {
    List<User> getUserList();
}

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.dao.UserMapper">

	<select id="getUserList" resultType="user">
	    select *from user;
	</select>
	
</mapper>

1. POJO實體類 和 數(shù)據(jù)表字段不匹配

@Test
public void test1(){
    SqlSession session = mybatisUtil.getSqlsession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    List<User> list = mapper.getUserList();
    for (User user : list) {
        System.out.println(user.toString());
    }
    session.close();
}

POJO實體類中有兩個字段和數(shù)據(jù)庫的字段不匹配,最后獲得結(jié)果的時對于匹配失敗的屬性會產(chǎn)生null空值。使用輸出日志進行幫忙很容易看到區(qū)別。

在這里插入圖片描述

簡單的解決方案:就是SQL語句查詢時給查詢字段使用重命名。

select id, name as username, pwd as password from user

在這里插入圖片描述

2. resultMap解決屬性 - 字段不匹配問題

上面這種解決方案是能夠解決問題的,但是有點冗余本身就要查全部的信息用的 * 做通配。這么一改需要每個字段都列出來,然后對極個別的字段進行取別名。試想一下當數(shù)據(jù)表中有幾十個字段呢?而真正需要取別名的字段只有1 - 2個呢?因此mybatis提供了一個強大的機制resultMap結(jié)果集映射來解決這個問題。

<?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.dao.UserMapper">
	
	<!--
		  1. id可以認為是定義方法名,整個resultMap是一個映射方法,調(diào)用這個方法就可以完成這個映射。
		  2. type是實體類的名稱
   -->
    <resultMap id="FieldMap" type="user">
    	<!--   column 是數(shù)據(jù)庫字段名    property是實體類屬性名   -->
        <result column="name" property="username"/>
        <result column="pwd"  property="password"/>
    </resultMap>
    <select id="getUserList" resultMap="FieldMap">
        select *from user
    </select>

</mapper>

在這里插入圖片描述

resultMap標簽的解釋:

  1. id可以認為定義方法的名稱,下面select中的resultMap傳入id的值就相當于使用這個方法完成映射。
  2. type是實體類名
  3. column對應(yīng)數(shù)據(jù)庫中的字段
  4. property是實體類的屬性。

到此這篇關(guān)于mybatis簡單resultMap使用詳解的文章就介紹到這了,更多相關(guān)mybatis resultMap使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring-Task定時任務(wù)的使用介紹

    Spring-Task定時任務(wù)的使用介紹

    目前springboot應(yīng)用廣泛,因此對于spring-task直接基于springboot框架介紹,不涉及xml配置。本文直接介紹spring-task的使用方法,需要的可以參考一下
    2022-11-11
  • springboot啟動加載CommandLineRunner @PostConstruct問題

    springboot啟動加載CommandLineRunner @PostConstruct問題

    這篇文章主要介紹了springboot啟動加載CommandLineRunner @PostConstruct問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Jenkins如何使用DockerFile自動部署Java項目

    Jenkins如何使用DockerFile自動部署Java項目

    這篇文章主要介紹了Jenkins如何使用DockerFile自動部署Java項目,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • MyBatis自動生成Where語句

    MyBatis自動生成Where語句

    這篇文章主要介紹了MyBatis自動生成Where語句的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • JVM進階教程之字段訪問優(yōu)化淺析

    JVM進階教程之字段訪問優(yōu)化淺析

    這篇文章主要給大家介紹了關(guān)于JVM進階教程之字段訪問優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • JavaCV 圖像邊緣檢測之Canny 算法詳解

    JavaCV 圖像邊緣檢測之Canny 算法詳解

    在圖像處理中,邊緣檢測是基礎(chǔ)且關(guān)鍵的一環(huán),其中Canny邊緣檢測算法以其高精度和可靠性著稱,本文詳細介紹了使用JavaCV庫實現(xiàn)Canny算法的原理和步驟,結(jié)合代碼示例和案例分析,展示了Canny算法在Java環(huán)境下的實現(xiàn)過程和邊緣檢測效果
    2024-11-11
  • Java訪問權(quán)限控制的重要性深入講解

    Java訪問權(quán)限控制的重要性深入講解

    這篇文章主要給大家介紹了關(guān)于Java訪問權(quán)限控制的重要性的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 詳細解讀Java的串口編程

    詳細解讀Java的串口編程

    這篇文章主要介紹了詳細解讀Java的串口編程,而文中講解的示例主要針對于JavaComm和RxTx這兩個庫,需要的朋友可以參考下
    2015-08-08
  • SpringBoot異步調(diào)用方法實現(xiàn)場景代碼實例

    SpringBoot異步調(diào)用方法實現(xiàn)場景代碼實例

    這篇文章主要介紹了SpringBoot異步調(diào)用方法實現(xiàn)場景代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • 解決SpringBoot加載application.properties配置文件的坑

    解決SpringBoot加載application.properties配置文件的坑

    這篇文章主要介紹了SpringBoot加載application.properties配置文件的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論

衢州市| 天镇县| 红安县| 抚宁县| 当涂县| 蒲江县| 同德县| 常熟市| 红安县| 定安县| 禄丰县| 静宁县| 清河县| 翼城县| 沙河市| 文水县| 镇沅| 镇宁| 高雄市| 咸阳市| 乌苏市| 巴塘县| 封开县| 栖霞市| 五常市| 宁晋县| 高台县| 石首市| 铜梁县| 西丰县| 曲阳县| 威信县| 即墨市| 阳原县| 甘孜县| 广昌县| 福海县| 东至县| 阿瓦提县| 仪陇县| 明光市|