欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mybatis核心配置文件、默認類型別名、Mybatis獲取參數值的兩種方式(實例代碼)

 更新時間:2024年03月21日 15:21:05   作者:哥的時代  
這篇文章主要介紹了Mybatis核心配置文件、默認類型別名、Mybatis獲取參數值的兩種方式,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

一、核心配置文件詳解

核心配置文件中的標簽必須按照固定的順序(有的標簽可以不寫,但順序一定不能亂):
properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers

<?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文件,此時就可以${屬性名}的方式訪問屬性值-->
    <properties resource="jdbc.properties"></properties>
    <settings>
        <!--將表中字段的下劃線自動轉換為駝峰-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--開啟延遲加載-->
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>
    <typeAliases>
        <!--
        typeAlias:設置某個具體的類型的別名
        屬性:
        type:需要設置別名的類型的全類名
        alias:設置此類型的別名,且別名不區(qū)分大小寫。若不設置此屬性,該類型擁有默認的別名,即類名
        -->
        <!--<typeAlias type="com.atguigu.mybatis.bean.User"></typeAlias>-->
        <!--<typeAlias type="com.atguigu.mybatis.bean.User" alias="user">
        </typeAlias>-->
        <!--以包為單位,設置改包下所有的類型都擁有默認的別名,即類名且不區(qū)分大小寫-->
        <package name="com.atguigu.mybatis.bean"/>
    </typeAliases>
    <!--
    environments:設置多個連接數據庫的環(huán)境
    屬性:
	    default:設置默認使用的環(huán)境的id
    -->
    <environments default="mysql_test">
        <!--
        environment:設置具體的連接數據庫的環(huán)境信息
        屬性:
	        id:設置環(huán)境的唯一標識,可通過environments標簽中的default設置某一個環(huán)境的id,表示默認使用的環(huán)境
        -->
        <environment id="mysql_test">
            <!--
            transactionManager:設置事務管理方式
            屬性:
	            type:設置事務管理方式,type="JDBC|MANAGED"
	            type="JDBC":設置當前環(huán)境的事務管理都必須手動處理
	            type="MANAGED":設置事務被管理,例如spring中的AOP
            -->
            <transactionManager type="JDBC"/>
            <!--
            dataSource:設置數據源
            屬性:
	            type:設置數據源的類型,type="POOLED|UNPOOLED|JNDI"
	            type="POOLED":使用數據庫連接池,即會將創(chuàng)建的連接進行緩存,下次使用可以從緩存中直接獲取,不需要重新創(chuàng)建
	            type="UNPOOLED":不使用數據庫連接池,即每次使用連接都需要重新創(chuàng)建
	            type="JNDI":調用上下文中的數據源
            -->
            <dataSource type="POOLED">
                <!--設置驅動類的全類名-->
                <property name="driver" value="${jdbc.driver}"/>
                <!--設置連接數據庫的連接地址-->
                <property name="url" value="${jdbc.url}"/>
                <!--設置連接數據庫的用戶名-->
                <property name="username" value="${jdbc.username}"/>
                <!--設置連接數據庫的密碼-->
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--引入映射文件-->
    <mappers>
        <!-- <mapper resource="UserMapper.xml"/> -->
        <!--
        以包為單位,將包下所有的映射文件引入核心配置文件
        注意:
			1. 此方式必須保證mapper接口和mapper映射文件必須在相同的包下
			2. mapper接口要和mapper映射文件的名字一致
        -->
        <package name="com.atguigu.mybatis.mapper"/>
    </mappers>
</configuration>

二、默認的類型別名

三、MyBatis的增刪改查

添加

<!--int insertUser();-->
<insert id="insertUser">
	insert into t_user values(null,'admin','123456',23,'男','12345@qq.com')
</insert>

刪除

<!--int deleteUser();-->
<delete id="deleteUser">
    delete from t_user where id = 6
</delete>

修改

<!--int updateUser();-->
<update id="updateUser">
    update t_user set username = '張三' where id = 5
</update>

查詢一個實體類對象

<!--User getUserById();-->  
<select id="getUserById" resultType="com.atguigu.mybatis.bean.User">  
	select * from t_user where id = 2  
</select>

查詢集合

<!--List<User> getUserList();-->
<select id="getUserList" resultType="com.atguigu.mybatis.bean.User">
	select * from t_user
</select>

注意:

  • 查詢的標簽select必須設置屬性resultType或resultMap,用于設置實體類和數據庫表的映射關系
    • resultType:自動映射,用于屬性名和表中字段名一致的情況
    • resultMap:自定義映射,用于一對多或多對一或字段名和屬性名不一致的情況
  • 當查詢的數據為多條時,不能使用實體類作為返回值,只能使用集合,否則會拋出異常TooManyResultsException;但是若查詢的數據只有一條,可以使用實體類或集合作為返回值

四、MyBatis獲取參數值的兩種方式

  • MyBatis獲取參數值的兩種方式:${}和#{}
  • ${}的本質就是字符串拼接,#{}的本質就是占位符賦值
  • ${}使用字符串拼接的方式拼接sql,若為字符串類型或日期類型的字段進行賦值時,需要手動加單引號;但是#{}使用占位符賦值的方式拼接sql,此時為字符串類型或日期類型的字段進行賦值時,可以自動添加單引號

1、單個字面量類型的參數

若mapper接口中的方法參數為單個的字面量類型,此時可以使用${}和#{}以任意的名稱(最好見名識意)獲取參數的值,注意${}需要手動加單引號

<!--User getUserByUsername(String username);-->
<select id="getUserByUsername" resultType="User">
	select * from t_user where username = #{username}
</select>
<!--User getUserByUsername(String username);-->
<select id="getUserByUsername" resultType="User">  
	select * from t_user where username = '${username}'  
</select>

2、多個字面量類型的參數

  • 若mapper接口中的方法參數為多個時,此時MyBatis會自動將這些參數放在一個map集合中

以arg0,arg1…為鍵,以參數為值;

以param1,param2…為鍵,以參數為值;

  • 因此只需要通過${}和#{}訪問map集合的鍵就可以獲取相對應的值,注意${}需要手動加單引號。
  • 使用arg或者param都行,要注意的是,arg是從arg0開始的,param是從param1開始的
<!--User checkLogin(String username,String password);-->
<select id="checkLogin" resultType="User">  
	select * from t_user where username = #{arg0} and password = #{arg1}  
</select>
<!--User checkLogin(String username,String password);-->
<select id="checkLogin" resultType="User">
	select * from t_user where username = '${param1}' and password = '${param2}'
</select>

3、map集合類型的參數

若mapper接口中的方法需要的參數為多個時,此時可以手動創(chuàng)建map集合,將這些數據放在map中只需要通過${}和#{}訪問map集合的鍵就可以獲取相對應的值,注意${}需要手動加單引號

<!--User checkLoginByMap(Map<String,Object> map);-->
<select id="checkLoginByMap" resultType="User">
	select * from t_user where username = #{username} and password = #{password}
</select>
@Test
public void checkLoginByMap() {
	SqlSession sqlSession = SqlSessionUtils.getSqlSession();
	ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
	Map<String,Object> map = new HashMap<>();
	map.put("usermane","admin");
	map.put("password","123456");
	User user = mapper.checkLoginByMap(map);
	System.out.println(user);
}

4、實體類類型的參數

若mapper接口中的方法參數為實體類對象時此時可以使用${}和#{},通過訪問實體類對象中的屬性名獲取屬性值,注意${}需要手動加單引號

<!--int insertUser(User user);-->
<insert id="insertUser">
	insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})
</insert>
@Test
public void insertUser() { 
	SqlSession sqlSession = SqlSessionUtils.getSqlSession();
	ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
	User user = new User(null,"Tom","123456",12,"男","123@321.com");
	mapper.insertUser(user);
}

5、使用@Param標識參數

  • 可以通過@Param注解標識mapper接口中的方法參數,此時,會將這些參數放在map集合中
    • 以@Param注解的value屬性值為鍵,以參數為值;
    • 以param1,param2…為鍵,以參數為值;
  • 只需要通過${}和#{}訪問map集合的鍵就可以獲取相對應的值,注意${}需要手動加單引號
<!--User CheckLoginByParam(@Param("username") String username, @Param("password") String password);-->
    <select id="CheckLoginByParam" resultType="User">
        select * from t_user where username = #{username} and password = #{password}
    </select>
@Test
public void checkLoginByParam() {
	SqlSession sqlSession = SqlSessionUtils.getSqlSession();
	ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
	mapper.CheckLoginByParam("admin","123456");
}

建議分成兩種情況進行處理

  • 實體類類型的參數
  • 使用@Param標識參數

總結

以上就是Mybatis之核心配置文件詳解、默認類型別名、Mybatis獲取參數值的兩種方式的相關知識點,希望對你有所幫助。

到此這篇關于Mybatis核心配置文件、默認類型別名、Mybatis獲取參數值的兩種方式的文章就介紹到這了,更多相關Mybatis獲取參數值內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Hadoop源碼分析六啟動文件namenode原理詳解

    Hadoop源碼分析六啟動文件namenode原理詳解

    本篇是Hadoop源碼分析系列文章第六篇,主要介紹Hadoop中的啟動文件namenode,后續(xù)本系列文章會持續(xù)更新,有需要的朋友可以借鑒參考下
    2021-09-09
  • java基于jdbc連接mysql數據庫功能實例詳解

    java基于jdbc連接mysql數據庫功能實例詳解

    這篇文章主要介紹了java基于jdbc連接mysql數據庫功能,結合實例形式詳細分析了jdbc連接mysql數據庫的原理、步驟、實現(xiàn)方法及相關操作技巧,需要的朋友可以參考下
    2017-10-10
  • Java實現(xiàn)的簡單音樂播放器功能示例

    Java實現(xiàn)的簡單音樂播放器功能示例

    這篇文章主要介紹了Java實現(xiàn)的簡單音樂播放器功能,涉及java針對多媒體文件相關載入、播放相關操作技巧,需要的朋友可以參考下
    2019-02-02
  • java中獲取當前服務器的Ip地址的方法

    java中獲取當前服務器的Ip地址的方法

    本篇文章主要介紹了java中獲取當前服務器的Ip地址的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • IDEA創(chuàng)建Servlet并配置web.xml的實現(xiàn)

    IDEA創(chuàng)建Servlet并配置web.xml的實現(xiàn)

    這篇文章主要介紹了IDEA創(chuàng)建Servlet并配置web.xml的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Java數據結構與算法之雙向鏈表、環(huán)形鏈表及約瑟夫問題深入理解

    Java數據結構與算法之雙向鏈表、環(huán)形鏈表及約瑟夫問題深入理解

    這篇文章主要介紹了Java數據結構與算法之雙向鏈表、環(huán)形鏈表及約瑟夫問題深入理解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • java ArrayList集合中的某個對象屬性進行排序的實現(xiàn)代碼

    java ArrayList集合中的某個對象屬性進行排序的實現(xiàn)代碼

    這篇文章主要介紹了java ArrayList集合中的某個對象屬性進行排序的實現(xiàn)代碼,需要的朋友可以參考下
    2016-07-07
  • Java結構型設計模式之橋接模式詳細講解

    Java結構型設計模式之橋接模式詳細講解

    橋接,顧名思義,就是用來連接兩個部分,使得兩個部分可以互相通訊。橋接模式將系統(tǒng)的抽象部分與實現(xiàn)部分分離解耦,使他們可以獨立的變化。本文通過示例詳細介紹了橋接模式的原理與使用,需要的可以參考一下
    2022-09-09
  • Java構建JDBC應用程序的實例操作

    Java構建JDBC應用程序的實例操作

    在本篇文章里小編給大家整理了一篇關于Java構建JDBC應用程序的實例操作,有興趣的朋友們可以學習參考下。
    2021-03-03
  • Mybatis參數傳遞示例代碼

    Mybatis參數傳遞示例代碼

    這篇文章主要給大家介紹了關于Mybatis參數傳遞的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08

最新評論