国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

mybatis簡(jiǎn)單resultMap使用詳解

發(fā)布時(shí)間:2021-07-17 21:51 來(lái)源:腳本之家 閱讀:0 作者:Splay_Tree 欄目: 編程語(yǔ)言 歡迎投稿:712375056

Mybatis的介紹以及使用:

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

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>			<!-- 使用日志進(jìn)行幫忙查看 -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>

    <typeAliases>		<!-- 取個(gè)別名 -->
        <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加載工具類(lèi)

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實(shí)體類(lèi)User,為了方便簡(jiǎn)單實(shí)用Lombok注解,減少一些代碼。

package com.pojo;

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

@Data                           //各種get / set方法  Tostring...
@AllArgsConstructor             //全參構造
@NoArgsConstructor              //無(wú)參構造
public class User {
    private int id;						//對應數據庫中的id
    private String username;			//對應數據庫中的name
    private String password;			//對應數據庫中的pwd
}

接口方法與對應的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í)體類(lèi) 和 數據表字段不匹配

@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í)體類(lèi)中有兩個(gè)字段和數據庫的字段不匹配,最后獲得結果的時(shí)對于匹配失敗的屬性會(huì )產(chǎn)生null空值。使用輸出日志進(jìn)行幫忙很容易看到區別。

簡(jiǎn)單的解決方案:就是SQL語(yǔ)句查詢(xún)時(shí)給查詢(xún)字段使用重命名。

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

2. resultMap解決屬性 - 字段不匹配問(wèn)題

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

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

</mapper>

resultMap標簽的解釋?zhuān)?/p>

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

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

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

狠狠狠的在啪线香蕉WWW、WL| 精品精品国产高清a毛片| 99精品久久精品一区二区| 最近好看的在线观看视频| 亚洲熟妇色XXXXX欧美老妇| 亚洲人成伊人成综合网久久久|