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

Mybatis核心配置文件、默認(rèn)類(lèi)型別名、Mybatis獲取參數(shù)值的兩種方式(實(shí)例代碼)

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

一、核心配置文件詳解

核心配置文件中的標(biāo)簽必須按照固定的順序(有的標(biāo)簽可以不寫(xiě),但順序一定不能亂):
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文件,此時(shí)就可以${屬性名}的方式訪(fǎng)問(wèn)屬性值-->
    <properties resource="jdbc.properties"></properties>
    <settings>
        <!--將表中字段的下劃線(xiàn)自動(dòng)轉(zhuǎn)換為駝峰-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--開(kāi)啟延遲加載-->
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>
    <typeAliases>
        <!--
        typeAlias:設(shè)置某個(gè)具體的類(lèi)型的別名
        屬性:
        type:需要設(shè)置別名的類(lèi)型的全類(lèi)名
        alias:設(shè)置此類(lèi)型的別名,且別名不區(qū)分大小寫(xiě)。若不設(shè)置此屬性,該類(lèi)型擁有默認(rèn)的別名,即類(lèi)名
        -->
        <!--<typeAlias type="com.atguigu.mybatis.bean.User"></typeAlias>-->
        <!--<typeAlias type="com.atguigu.mybatis.bean.User" alias="user">
        </typeAlias>-->
        <!--以包為單位,設(shè)置改包下所有的類(lèi)型都擁有默認(rèn)的別名,即類(lèi)名且不區(qū)分大小寫(xiě)-->
        <package name="com.atguigu.mybatis.bean"/>
    </typeAliases>
    <!--
    environments:設(shè)置多個(gè)連接數(shù)據(jù)庫(kù)的環(huán)境
    屬性:
	    default:設(shè)置默認(rèn)使用的環(huán)境的id
    -->
    <environments default="mysql_test">
        <!--
        environment:設(shè)置具體的連接數(shù)據(jù)庫(kù)的環(huán)境信息
        屬性:
	        id:設(shè)置環(huán)境的唯一標(biāo)識(shí),可通過(guò)environments標(biāo)簽中的default設(shè)置某一個(gè)環(huán)境的id,表示默認(rèn)使用的環(huán)境
        -->
        <environment id="mysql_test">
            <!--
            transactionManager:設(shè)置事務(wù)管理方式
            屬性:
	            type:設(shè)置事務(wù)管理方式,type="JDBC|MANAGED"
	            type="JDBC":設(shè)置當(dāng)前環(huán)境的事務(wù)管理都必須手動(dòng)處理
	            type="MANAGED":設(shè)置事務(wù)被管理,例如spring中的AOP
            -->
            <transactionManager type="JDBC"/>
            <!--
            dataSource:設(shè)置數(shù)據(jù)源
            屬性:
	            type:設(shè)置數(shù)據(jù)源的類(lèi)型,type="POOLED|UNPOOLED|JNDI"
	            type="POOLED":使用數(shù)據(jù)庫(kù)連接池,即會(huì)將創(chuàng)建的連接進(jìn)行緩存,下次使用可以從緩存中直接獲取,不需要重新創(chuàng)建
	            type="UNPOOLED":不使用數(shù)據(jù)庫(kù)連接池,即每次使用連接都需要重新創(chuàng)建
	            type="JNDI":調(diào)用上下文中的數(shù)據(jù)源
            -->
            <dataSource type="POOLED">
                <!--設(shè)置驅(qū)動(dòng)類(lèi)的全類(lèi)名-->
                <property name="driver" value="${jdbc.driver}"/>
                <!--設(shè)置連接數(shù)據(jù)庫(kù)的連接地址-->
                <property name="url" value="${jdbc.url}"/>
                <!--設(shè)置連接數(shù)據(jù)庫(kù)的用戶(hù)名-->
                <property name="username" value="${jdbc.username}"/>
                <!--設(shè)置連接數(shù)據(jù)庫(kù)的密碼-->
                <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>

二、默認(rèn)的類(lèi)型別名

三、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>

查詢(xún)一個(gè)實(shí)體類(lèi)對(duì)象

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

查詢(xún)集合

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

注意:

  • 查詢(xún)的標(biāo)簽select必須設(shè)置屬性resultType或resultMap,用于設(shè)置實(shí)體類(lèi)和數(shù)據(jù)庫(kù)表的映射關(guān)系
    • resultType:自動(dòng)映射,用于屬性名和表中字段名一致的情況
    • resultMap:自定義映射,用于一對(duì)多或多對(duì)一或字段名和屬性名不一致的情況
  • 當(dāng)查詢(xún)的數(shù)據(jù)為多條時(shí),不能使用實(shí)體類(lèi)作為返回值,只能使用集合,否則會(huì)拋出異常TooManyResultsException;但是若查詢(xún)的數(shù)據(jù)只有一條,可以使用實(shí)體類(lèi)或集合作為返回值

四、MyBatis獲取參數(shù)值的兩種方式

  • MyBatis獲取參數(shù)值的兩種方式:${}和#{}
  • ${}的本質(zhì)就是字符串拼接,#{}的本質(zhì)就是占位符賦值
  • ${}使用字符串拼接的方式拼接sql,若為字符串類(lèi)型或日期類(lèi)型的字段進(jìn)行賦值時(shí),需要手動(dòng)加單引號(hào);但是#{}使用占位符賦值的方式拼接sql,此時(shí)為字符串類(lèi)型或日期類(lèi)型的字段進(jìn)行賦值時(shí),可以自動(dòng)添加單引號(hào)

1、單個(gè)字面量類(lèi)型的參數(shù)

若mapper接口中的方法參數(shù)為單個(gè)的字面量類(lèi)型,此時(shí)可以使用${}和#{}以任意的名稱(chēng)(最好見(jiàn)名識(shí)意)獲取參數(shù)的值,注意${}需要手動(dòng)加單引號(hào)

<!--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、多個(gè)字面量類(lèi)型的參數(shù)

  • 若mapper接口中的方法參數(shù)為多個(gè)時(shí),此時(shí)MyBatis會(huì)自動(dòng)將這些參數(shù)放在一個(gè)map集合中

以arg0,arg1…為鍵,以參數(shù)為值;

以param1,param2…為鍵,以參數(shù)為值;

  • 因此只需要通過(guò)${}和#{}訪(fǎng)問(wèn)map集合的鍵就可以獲取相對(duì)應(yīng)的值,注意${}需要手動(dòng)加單引號(hào)。
  • 使用arg或者param都行,要注意的是,arg是從arg0開(kāi)始的,param是從param1開(kāi)始的
<!--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集合類(lèi)型的參數(shù)

若mapper接口中的方法需要的參數(shù)為多個(gè)時(shí),此時(shí)可以手動(dòng)創(chuàng)建map集合,將這些數(shù)據(jù)放在map中只需要通過(guò)${}和#{}訪(fǎng)問(wèn)map集合的鍵就可以獲取相對(duì)應(yīng)的值,注意${}需要手動(dòng)加單引號(hào)

<!--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、實(shí)體類(lèi)類(lèi)型的參數(shù)

若mapper接口中的方法參數(shù)為實(shí)體類(lèi)對(duì)象時(shí)此時(shí)可以使用${}和#{},通過(guò)訪(fǎng)問(wèn)實(shí)體類(lèi)對(duì)象中的屬性名獲取屬性值,注意${}需要手動(dòng)加單引號(hào)

<!--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標(biāo)識(shí)參數(shù)

  • 可以通過(guò)@Param注解標(biāo)識(shí)mapper接口中的方法參數(shù),此時(shí),會(huì)將這些參數(shù)放在map集合中
    • 以@Param注解的value屬性值為鍵,以參數(shù)為值;
    • 以param1,param2…為鍵,以參數(shù)為值;
  • 只需要通過(guò)${}和#{}訪(fǎng)問(wèn)map集合的鍵就可以獲取相對(duì)應(yīng)的值,注意${}需要手動(dòng)加單引號(hào)
<!--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");
}

建議分成兩種情況進(jìn)行處理

  • 實(shí)體類(lèi)類(lèi)型的參數(shù)
  • 使用@Param標(biāo)識(shí)參數(shù)

總結(jié)

以上就是Mybatis之核心配置文件詳解、默認(rèn)類(lèi)型別名、Mybatis獲取參數(shù)值的兩種方式的相關(guān)知識(shí)點(diǎn),希望對(duì)你有所幫助。

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

相關(guān)文章

最新評(píng)論