亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

這里我們貼出之前的UserDao對應(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>

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

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

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

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

<?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ù)庫連接池 -->
   <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>

如上所示,我們在原來的mybatis配置文件中增加了<typeAliases>標(biāo)簽,并將com.majing.learning.mybatis.entity.User這個實體類重命名為User,然后我們在mapper配置文件中就可以如下使用了。

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

<?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>

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

也許你會有疑問,如果實體類比較多怎么辦?還不是要配置很多實體類和別名,NO,NO,NO!下面跟大家說說另一種配置方法。

<?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ù)庫連接池 -->
   <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)簽,表示掃描該包名下的所有類(除了接口和匿名內(nèi)部類),如果類名上有注解,則使用注解指定的名稱作為別名,如果沒有則使用類名首字母小寫作為別名,如com.majing.learning.mybatis.entity.User這個類如果沒有設(shè)置@Alias注解,則此時會被關(guān)聯(lián)到user這個別名上。

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

(1)給實體類添加@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)實體類不加注解的情況下

修改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="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>

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

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

別名 映射的類型
_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)于別名的全部使用方法這里便介紹完成了,是不是很簡單啊~

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

對于mapper的映射xml文件

sql語句中存在著resultType。

修改前:寫了接受實體類的全限定名

在這里插入圖片描述

在mybatis的配置文件中添加

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

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

修改后:

添加后在mapper的映射文件中全限定名中改為了配置的簡單的別名

在這里插入圖片描述

第二種方式:

在代碼中:

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

在配置文件中:

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

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

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

相關(guān)文章

  • java中實現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實例

    java中實現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實例

    用Java創(chuàng)建文件或目錄非常簡單,下面這篇文章主要給大家介紹了關(guān)于java中實現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實例,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • SpringBoot訪問HTML過程詳解

    SpringBoot訪問HTML過程詳解

    這篇文章主要詳細介紹了SpringBoot訪問HTML的全過程,文章中有詳細的代碼和圖片講解,感興趣的同學(xué)可以參考一下
    2023-04-04
  • Java中的分割字符串?split(“.”)無效問題

    Java中的分割字符串?split(“.”)無效問題

    這篇文章主要介紹了Java中的分割字符串?split(“.”)無效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • java后臺實現(xiàn)js關(guān)閉本頁面,父頁面指定跳轉(zhuǎn)或刷新操作

    java后臺實現(xiàn)js關(guān)閉本頁面,父頁面指定跳轉(zhuǎn)或刷新操作

    這篇文章主要介紹了java后臺實現(xiàn)js關(guān)閉本頁面,父頁面指定跳轉(zhuǎn)或刷新操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • java使用influxDB數(shù)據(jù)庫的詳細代碼

    java使用influxDB數(shù)據(jù)庫的詳細代碼

    這篇文章主要為大家介紹了java使用influxDB數(shù)據(jù)庫的詳細代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 基于spring cloud多個消費端重復(fù)定義feign client的問題

    基于spring cloud多個消費端重復(fù)定義feign client的問題

    這篇文章主要介紹了spring cloud多個消費端重復(fù)定義feign client的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java正則表達式學(xué)習(xí)之分組與替換

    Java正則表達式學(xué)習(xí)之分組與替換

    這篇文章主要給大家介紹了關(guān)于Java正則表達式學(xué)習(xí)之分組與替換的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java多線程之原子類解析

    Java多線程之原子類解析

    這篇文章主要介紹了Java多線程之原子類解析,Java原子類是一種多線程編程中常用的工具,用于實現(xiàn)線程安全的操作,它們提供了一種原子性操作的機制,確保多個線程同時訪問共享變量時的數(shù)據(jù)一致性,需要的朋友可以參考下
    2023-10-10
  • Java字符流和字節(jié)流對文件操作的區(qū)別

    Java字符流和字節(jié)流對文件操作的區(qū)別

    本篇文章主要介紹了Java的IO流分為字符流(Reader,Writer)和字節(jié)流(InputStream,OutputStream),字節(jié)流顧名思義字節(jié)流就是將文件的內(nèi)容讀取到字節(jié)數(shù)組,對初學(xué)者很有用,有需要的朋友可以了解一下。
    2016-10-10
  • Java中static靜態(tài)變量的初始化完全解析

    Java中static靜態(tài)變量的初始化完全解析

    static所聲明的變量在Java中有一個初始化的先后順序,帶著這個問題接下來我們就來進行Java中static靜態(tài)變量的初始化完全解析:
    2016-06-06

最新評論