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

Mybatis配置之<typeAliases>別名配置元素解析

 更新時(shí)間:2021年07月13日 15:49:24   作者:DreamMakers  
這篇文章主要介紹了Mybatis配置之<typeAliases>別名配置元素解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在前面的文章<Mybatis配置之<properties>屬性配置元素詳述>,我們講述了<properties>標(biāo)簽元素的配置和使用方法。

在這篇文章中,我們來(lái)說(shuō)說(shuō)<typeAliases>標(biāo)簽元素,這個(gè)元素主要是用于對(duì)類(lèi)型進(jìn)行別名控制,具體什么意思呢?我們下面用一個(gè)示例說(shuō)明,看了之后我相信你就會(huì)明白了。

這里我們貼出之前的UserDao對(duì)應(yīng)的mapper文件

如下所示:

<?xml version="1.0" encoding="UTF-8" ?>   
<!DOCTYPE mapper   
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.majing.learning.mybatis.dao.UserDao">
 
 <select id="findUserById" resultType="com.majing.learning.mybatis.entity.User">
  select * from user where id = #{id}
 </select>
 
 <insert id="addUser" parameterType="com.majing.learning.mybatis.entity.User" useGeneratedKeys="true" keyProperty="id">
  insert into user(name,password,age) values(#{name},#{password},#{age})
 </insert>
 
 <delete id="deleteUser" parameterType="int">
  delete from user where id = #{id}
 </delete>
 
 <update id="updateUser" parameterType="com.majing.learning.mybatis.entity.User">
  update user set name = #{name}, password = #{password}, age = #{age} where id = #{id}
 </update>
 
</mapper>

從這個(gè)配置文件中,我們可以看到<select>、<insert>和<update>三個(gè)標(biāo)簽元素的resultType都是User對(duì)象,需要設(shè)置這個(gè)User對(duì)象的類(lèi)全限定名,即packname.classname。

我們發(fā)現(xiàn)一個(gè)問(wèn)題,那就是這個(gè)類(lèi)名,我們需要寫(xiě)多次,如果要改這個(gè)類(lèi)名的話,我們需要在多個(gè)地方進(jìn)行修改。

很明顯,這樣配置的話很容易造成修改上的遺漏,同時(shí)也書(shū)寫(xiě)上也比較麻煩。

因此,MyBatis為我們提供了一個(gè)簡(jiǎn)單方便的配置方法,那就是使用<typeAliases>標(biāo)簽元素,給實(shí)體類(lèi)設(shè)置一個(gè)別名。

<?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="mysql.properties">
  <property name="username" value="root"/>
  <property name="password" value="root"/>
  <property name="driver" value="com.mysql.jdbc.Driver"/>
  <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/>
 </properties>
 
 <settings>
  <setting name="logImpl" value="LOG4J" />
 </settings>
 
 <typeAliases>
   <typeAlias alias="User" type="com.majing.learning.mybatis.entity.User"/> 
 </typeAliases>
 
 <!-- 和spring整合后 environments配置將廢除 -->
 <environments default="development">
  <environment id="development">
   <!-- 使用jdbc事務(wù)管理 -->
   <transactionManager type="JDBC" />
   <!-- 數(shù)據(jù)庫(kù)連接池 -->
   <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\majing\learning\mybatis\dao\UserDaoMapper.xml" />
 </mappers>
 
</configuration>

如上所示,我們?cè)谠瓉?lái)的mybatis配置文件中增加了<typeAliases>標(biāo)簽,并將com.majing.learning.mybatis.entity.User這個(gè)實(shí)體類(lèi)重命名為User,然后我們?cè)趍apper配置文件中就可以如下使用了。

備注:這里需要注意的是,typeAliases配置需要放置在settings之后,否則會(huì)出異常!??!

<?xml version="1.0" encoding="UTF-8" ?>   
<!DOCTYPE mapper   
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.majing.learning.mybatis.dao.UserDao">
 
 <select id="findUserById" resultType="User">
  select * from user where id = #{id}
 </select>
 
 <insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
  insert into user(name,password,age) values(#{name},#{password},#{age})
 </insert>
 
 <delete id="deleteUser" parameterType="int">
  delete from user where id = #{id}
 </delete>
 
 <update id="updateUser" parameterType="User">
  update user set name = #{name}, password = #{password}, age = #{age} where id = #{id}
 </update>
 
</mapper>

這樣即使實(shí)體類(lèi)名修改了,所需要修改的地方也只有一處,便于集中管理。

也許你會(huì)有疑問(wèn),如果實(shí)體類(lèi)比較多怎么辦?還不是要配置很多實(shí)體類(lèi)和別名,NO,NO,NO!下面跟大家說(shuō)說(shuō)另一種配置方法。

<?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="mysql.properties">
  <property name="username" value="root"/>
  <property name="password" value="root"/>
  <property name="driver" value="com.mysql.jdbc.Driver"/>
  <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/>
 </properties>
 
 <settings>
  <setting name="logImpl" value="LOG4J" />
 </settings>
 
 <typeAliases>
  <package name="com.majing.learning.mybatis.entity"/>
 </typeAliases>
 
 <!-- 和spring整合后 environments配置將廢除 -->
 <environments default="development">
  <environment id="development">
   <!-- 使用jdbc事務(wù)管理 -->
   <transactionManager type="JDBC" />
   <!-- 數(shù)據(jù)庫(kù)連接池 -->
   <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\majing\learning\mybatis\dao\UserDaoMapper.xml" />
 </mappers>
 
</configuration>

在這里,我們不再使用<typeAliases>標(biāo)簽下<typeAliase>,而是使用<package>標(biāo)簽,表示掃描該包名下的所有類(lèi)(除了接口和匿名內(nèi)部類(lèi)),如果類(lèi)名上有注解,則使用注解指定的名稱(chēng)作為別名,如果沒(méi)有則使用類(lèi)名首字母小寫(xiě)作為別名,如com.majing.learning.mybatis.entity.User這個(gè)類(lèi)如果沒(méi)有設(shè)置@Alias注解,則此時(shí)會(huì)被關(guān)聯(lián)到user這個(gè)別名上。

因此,按照上面的配置,我們還需要將實(shí)體類(lèi)做一下調(diào)整,如下兩種方式所示:

(1)給實(shí)體類(lèi)添加@Alias注解

package com.majing.learning.mybatis.entity;
 
import org.apache.ibatis.type.Alias;
 
@Alias(value="User")
public class User {
	private int id;
	private String name;
	private String password;
	private int age;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", password=" + password + ", age=" + age + "]";
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
 
	
	
}

(2)實(shí)體類(lèi)不加注解的情況下

修改mapper文件中引用的類(lèi)型別名,改為小寫(xiě),如下所示:

<?xml version="1.0" encoding="UTF-8" ?>   
<!DOCTYPE mapper   
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.majing.learning.mybatis.dao.UserDao">
 
	<select id="findUserById" resultType="user">
		select * from user where id = #{id}
	</select>
	
	<insert id="addUser" parameterType="user" useGeneratedKeys="true" keyProperty="id">
		insert into user(name,password,age) values(#{name},#{password},#{age})
	</insert>
	
	<delete id="deleteUser" parameterType="int">
		delete from user where id = #{id}
	</delete>
	
	<update id="updateUser" parameterType="user">
		update user set name = #{name}, password = #{password}, age = #{age} where id = #{id}
	</update>
 
</mapper>

最后想說(shuō),mybatis為我們已經(jīng)實(shí)現(xiàn)了很多別名,已經(jīng)為許多常見(jiàn)的 Java 類(lèi)型內(nèi)建了相應(yīng)的類(lèi)型別名。

它們都是大小寫(xiě)不敏感的,需要注意的是由基本類(lèi)型名稱(chēng)重復(fù)導(dǎo)致的特殊處理。

別名 映射的類(lèi)型
_byte byte
_long long
_short short
_int int
_integer int
_double double
_float float
_boolean boolean
string String
byte Byte
long Long
short Short
int Integer
integer Integer
double Double
float Float
boolean Boolean
date Date
decimal BigDecimal
bigdecimal BigDecimal
object Object
map Map
hashmap HashMap
list List
arraylist ArrayList
collection Collection
iterator Iterator

至此,關(guān)于別名的全部使用方法這里便介紹完成了,是不是很簡(jiǎn)單啊~

Mybatis別名的配置(兩種方法)

對(duì)于mapper的映射xml文件

sql語(yǔ)句中存在著resultType。

修改前:寫(xiě)了接受實(shí)體類(lèi)的全限定名

在這里插入圖片描述

在mybatis的配置文件中添加

位置需要添加在configtion的標(biāo)簽下面;

<configuration>
    <typeAliases>
        <typeAlias type="com.uu.bean.News" alias="jj"/>
    </typeAliases>

修改后:

添加后在mapper的映射文件中全限定名中改為了配置的簡(jiǎn)單的別名。

在這里插入圖片描述

第二種方式:

在代碼中:

import org.apache.ibatis.type.Alias;
@Alias("jj")
public class News {

在配置文件中:

<configuration>
    <typeAliases>
        <package name="com.uu.bean"/>
    </typeAliases>

可以達(dá)到與配置中聲名相同的效果。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用JPA進(jìn)行CriteriaQuery進(jìn)行查詢(xún)的注意事項(xiàng)

    使用JPA進(jìn)行CriteriaQuery進(jìn)行查詢(xún)的注意事項(xiàng)

    這篇文章主要介紹了使用JPA進(jìn)行CriteriaQuery進(jìn)行查詢(xún)的注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 深入了解volatile和Java內(nèi)存模型

    深入了解volatile和Java內(nèi)存模型

    在本篇文章當(dāng)中,主要給大家深入介紹Volatile關(guān)鍵字和Java內(nèi)存模型。在文章當(dāng)中首先先介紹volatile的作用和Java內(nèi)存模型,然后層層遞進(jìn)介紹實(shí)現(xiàn)這些的具體原理、JVM底層是如何實(shí)現(xiàn)volatile的和JVM實(shí)現(xiàn)的匯編代碼以及CPU內(nèi)部結(jié)構(gòu),感興趣的可以了解一下
    2022-08-08
  • Spring Security Remember me使用及原理詳解

    Spring Security Remember me使用及原理詳解

    這篇文章主要介紹了Spring Security Remember me使用及原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Maven 主模塊和子模塊pom.xml依賴(lài)聲明

    Maven 主模塊和子模塊pom.xml依賴(lài)聲明

    這篇文章主要介紹了Maven 主模塊和子模塊pom.xml依賴(lài)聲明,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Spring Security基于過(guò)濾器實(shí)現(xiàn)圖形驗(yàn)證碼功能

    Spring Security基于過(guò)濾器實(shí)現(xiàn)圖形驗(yàn)證碼功能

    驗(yàn)證碼就是為了防止惡意用戶(hù)采用暴力重試的攻擊手段而設(shè)置的一種防護(hù)措施,接下來(lái)在Spring Security的環(huán)境中,我們可以用兩種方案實(shí)現(xiàn)圖形驗(yàn)證碼,具體實(shí)現(xiàn)方法跟隨小編一起看看吧
    2021-09-09
  • SpringBoot中EasyExcel實(shí)現(xiàn)execl導(dǎo)入導(dǎo)出

    SpringBoot中EasyExcel實(shí)現(xiàn)execl導(dǎo)入導(dǎo)出

    本文主要介紹了SpringBoot中EasyExcel實(shí)現(xiàn)execl導(dǎo)入導(dǎo)出,實(shí)現(xiàn)了如何準(zhǔn)備環(huán)境、創(chuàng)建實(shí)體類(lèi)、自定義轉(zhuǎn)換器以及編寫(xiě)導(dǎo)入邏輯的步驟和示例代碼,感興趣的可以了解下
    2023-06-06
  • 深入理解Java設(shè)計(jì)模式之適配器模式

    深入理解Java設(shè)計(jì)模式之適配器模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之適配器模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解
    2021-11-11
  • 如何使用Idea中的 Deployment 實(shí)現(xiàn)打包自動(dòng)部署

    如何使用Idea中的 Deployment 實(shí)現(xiàn)打包自動(dòng)部署

    這篇文章主要介紹了使用Idea中的 Deployment 實(shí)現(xiàn)打包自動(dòng)部署,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • java 發(fā)送郵件的實(shí)例代碼(可移植)

    java 發(fā)送郵件的實(shí)例代碼(可移植)

    java 發(fā)送郵件的實(shí)例代碼(可移植),需要的朋友可以參考一下
    2013-03-03
  • myeclipse8.5優(yōu)化技巧詳解

    myeclipse8.5優(yōu)化技巧詳解

    本文詳細(xì)介紹了myeclipse8.5優(yōu)化技巧,在這里和大家分享一下,希望對(duì)大家有用。
    2017-09-09

最新評(píng)論

云南省| 平和县| 崇信县| 郎溪县| 昌乐县| 洛南县| 潼关县| 贵港市| 名山县| 淄博市| 奉贤区| 循化| 乌拉特前旗| 万年县| 东海县| 三原县| 溆浦县| 新和县| 封开县| 阿克陶县| 平陆县| 万州区| 临西县| 高唐县| 清水河县| 慈溪市| 平塘县| 江都市| 郸城县| 错那县| 平安县| 邯郸县| 本溪市| 仙居县| 嵊泗县| 常州市| 长兴县| 宁城县| 西乌珠穆沁旗| 临汾市| 连山|