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

MyBatis中映射文件的使用案例代碼

 更新時(shí)間:2023年02月06日 08:56:23   作者:一天睡20個(gè)小時(shí)  
這篇文章主要介紹了MyBatis中映射文件的使用,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Mapper 就是“映射”的意思,Mapper 文件時(shí) Mybatis 中的 SQL 語(yǔ)句的配置文件,其會(huì)在運(yùn)行時(shí)加載 SQL 語(yǔ)句并映射相應(yīng)參數(shù)。在 Mybatis 的全局配置文件中,其中最后一項(xiàng)就是 mapper 文件的資源路徑的配置,因?yàn)閯?chuàng)建 SqlSessionFactory 時(shí)會(huì)加載全局配置文件,這說(shuō)明 Mapper 映射文件會(huì)在創(chuàng)建伊始就會(huì)被加載了。本文重點(diǎn)講解MyBatis映射文件的使用。

MyBatis中映射文件的使用

1、配置核心文件

①引入映射文件

? 首先我們得在核心配置文件中配置mappers,引入映射文件所在的包

<mappers>
      <package name="com.ch.mybatis.mapper"></package>
</mappers>

這里必須滿足兩個(gè)條件

  • 接口和映射文件所在的包必須一致
  • 接口的名字和映射文件的名字必須一致

在這里插入圖片描述

②配置typeAliases

typeAliases:設(shè)置類型別名,即為某個(gè)具體的類型設(shè)置一個(gè)別名。在MyBatis的范圍中,就可以使用別名表示一個(gè)具體的類型。

在核心配置文件中設(shè)置typeAliases,在映射文件中則可以直接使用別名。

  • 通過(guò)包設(shè)置類型別名,指定包下所有的類型將全部有用默認(rèn)的別名,即類名且不區(qū)分大小寫 。
  • 要注意標(biāo)簽的先后順序
<!--
		標(biāo)簽的先后順序
        properties?,settings?,typeAliases?,typeHandlers?,
        objectFactory?,objectWrapperFactory?,reflectorFactory?,
        plugins?,environments?,databaseIdProvider?,mappers?
    -->
<typeAliases>
        <package name="com.ch.mybatis.pojo"></package>
</typeAliases>

③配置映射文件

namespace接口的全類名和映射文件namespace一致。

<mapper namespace="com.ch.mybatis.mapper.userMapper">
    
</mapper>

2、MyBatis的增刪改查

創(chuàng)建數(shù)據(jù)表

復(fù)制進(jìn)MySQL數(shù)據(jù)庫(kù)中運(yùn)行即可

DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `password` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `gender` char(2) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Compact;

SET FOREIGN_KEY_CHECKS = 1;

在這里插入圖片描述

工具類

? 創(chuàng)建一個(gè)工具類,每次測(cè)試就不用去重新寫,直接調(diào)用獲取返回值即可

    public static SqlSession getSqlSession() {

        SqlSession sqlSession = null;
        try {
            //獲取核心配置文件
            InputStream is = Resources.getResourceAsStream("MyBatis-config.xml");

            //獲取SqlSessionFactoryBuilder對(duì)象
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

            //根據(jù)核心配置文件對(duì)應(yīng)的輸入流獲取SqlSessionFactory對(duì)象
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);

            //獲取SqlSession對(duì)象 自動(dòng)提交
            sqlSession = sqlSessionFactory.openSession(true);

        } catch (IOException e) {
            e.printStackTrace();
        }
        return sqlSession;
    }

添加

首先得在Mapper接口中創(chuàng)建方法

int insertUser();

在映射文件中使用insert標(biāo)簽,標(biāo)簽中的id要與接口中的方法名保持一致。等調(diào)用接口中的方法,它會(huì)根據(jù)mapper接口的全類名找到映射文件,然后會(huì)根據(jù)我們調(diào)用的方法的方法名,來(lái)找到當(dāng)前的sql語(yǔ)句,然后獲取當(dāng)前的sql來(lái)執(zhí)行。

可以將接口的方法寫在標(biāo)簽的上方,方便查看。

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

測(cè)試代碼

    public void testinsert(){

        SqlSession sqlSession = sqlSessionUtil.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        int i = mapper.insertUser();

        sqlSession.close();

    }

修改

<!--  void updateUser();  -->
<update id="updateUser">
    update t_user set username='root',password='123'where id = 1
</update>

刪除

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

查詢

查詢比較特殊除了得設(shè)置id還必須得設(shè)置另外一個(gè)參數(shù)resultType或resultMap

resultType:設(shè)置結(jié)果類型,即查詢的數(shù)據(jù)要轉(zhuǎn)換為的java的類型
resultMap:自定義映射,處理多對(duì)一或一對(duì)多的映射關(guān)系

resultType中應(yīng)該寫實(shí)體類的全類名,但是在核心文件中配置了typeAliases,所以這里可以直接寫實(shí)體類的名字不區(qū)分大小寫

 <!-- User selectUser();-->
<select id="selectUser" resultType="user">
    select id, username, password, age, gender, email from t_user where id = 1
</select>

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

MyBatis獲取參數(shù)值的兩種方式:${}#{}

${}的本質(zhì)就是字符串拼接,#{}的本質(zhì)就是占位符賦值

${}使用字符串拼接的方式拼接sql,若為字符串類型或日期類型的字段進(jìn)行賦值時(shí),需要手動(dòng)加單引號(hào);
但是#{}使用占位符賦值的方式拼接sql,此時(shí)為字符串類型或日期類型的字段進(jìn)行賦值時(shí), 可以自動(dòng)添加單引號(hào)

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

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

mapper接口方法的參數(shù)為單個(gè)的字面量類型此時(shí)可以通過(guò)#{}${}以任意的內(nèi)容獲取參數(shù)值,一定要注意${}的單引號(hào)問(wèn)題

多個(gè)字面量類型的參數(shù)

<!-- User chekLogin(String username , String password); -->
<select id="chekLogin" resultType="user">
 <!-- select * from t_user where username = #{arg0} and password = #{arg1}-->
    select * from t_user where username = '${param1}' and password = '${param2}'
</select>

mybatis會(huì)自動(dòng)把當(dāng)前參數(shù)放在一個(gè)Map集合中

放在Map集合中會(huì)以兩種方式存儲(chǔ)數(shù)據(jù)

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

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

map集合類型的參數(shù)

<!-- User chekLoginByMap(Map<String,Object> map);-->
<select id="chekLoginByMap" resultType="user">
    select * from t_user where username = #{username} and password = #{password}
</select>

mapper接口方法的參數(shù)為map集合類型的參數(shù)

只需要通過(guò)#{}和${}范圍map集合的鍵,

就可以獲取相對(duì)于的值,一定要注意${}的單引號(hào)問(wèn)題

測(cè)試代碼

    public void testChekLoginByMap() {
        SqlSession sqlSession = sqlSessionUtil.getSqlSession();

        userMapper mapper = sqlSession.getMapper(userMapper.class);

        Map map = new HashMap<String, Object>();

        map.put("username", "admin");
        map.put("password", "123456");

        User admin = mapper.chekLoginByMap(map);
        System.out.println(admin);
    }

實(shí)體類類型的參數(shù)

<!-- void selectUser(User User); -->
<insert id="selectUser">
    insert into t_user values(null,#{username},#{password},#{age},#{gender},#{email})
</insert>

mapper接口方法的參數(shù)為實(shí)體類類型的參數(shù)

只需要通過(guò)#{}和${}訪問(wèn)實(shí)體類中的屬性名,

就可以獲取相對(duì)于的屬性值,一定要注意${}的單引號(hào)問(wèn)題

使用@Param標(biāo)識(shí)參數(shù)

<!-- User chekLoginByUser(@Param("username") String username ,@Param("password") String password); -->
<select id="chekLoginByUser" resultType="user">
    select * from t_user where username = #{username} and password = #{password}
</select>

可以在mapper接口將這些參數(shù)上設(shè)置@param注解

此時(shí)MyBatis會(huì)將這些參數(shù)放在map中,以@Param注解的value屬性值為鍵,以參數(shù)為值;

到此這篇關(guān)于MyBatis中映射文件的使用的文章就介紹到這了,更多相關(guān)MyBatis映射文件的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java基于JDBC連接數(shù)據(jù)庫(kù)及顯示數(shù)據(jù)操作示例

    Java基于JDBC連接數(shù)據(jù)庫(kù)及顯示數(shù)據(jù)操作示例

    這篇文章主要介紹了Java基于JDBC連接數(shù)據(jù)庫(kù)及顯示數(shù)據(jù)操作,結(jié)合實(shí)例形式分析了Java使用jdbc進(jìn)行mysql數(shù)據(jù)庫(kù)連接與數(shù)據(jù)讀取、顯示等相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • Java操作Excel文件解析與讀寫方法詳解

    Java操作Excel文件解析與讀寫方法詳解

    相信現(xiàn)在很多搞后端的同學(xué)大部分做的都是后臺(tái)管理系統(tǒng),那么管理系統(tǒng)就肯定免不了Excel的導(dǎo)出導(dǎo)入功能,下面這篇文章主要給大家介紹了關(guān)于Java簡(jiǎn)單使用EasyExcel操作讀寫與解析的步驟與要點(diǎn),需要的朋友可以參考下
    2022-11-11
  • MyBatis攔截器的原理與使用

    MyBatis攔截器的原理與使用

    本文全面的講解了MyBatis攔截器的作用原理及使用方法,攔截器的使用可以提升開(kāi)發(fā)效率,學(xué)習(xí)MyBatis的朋友不妨了解下本文
    2021-06-06
  • SpringBoot上下文初始器加載過(guò)程詳解

    SpringBoot上下文初始器加載過(guò)程詳解

    這篇文章主要介紹了SpringBoot上下文初始器加載過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 一文解決pom.xml報(bào)錯(cuò)Dependency "xxx" not found的問(wèn)題

    一文解決pom.xml報(bào)錯(cuò)Dependency "xxx" not f

    我們?cè)谑褂胢aven進(jìn)行jar包管理時(shí)有時(shí)會(huì)遇到pom.xml中報(bào)錯(cuò)Dependency “XXX” not found,所以在本文中將給大家介紹一下pom.xml報(bào)錯(cuò)Dependency "xxx" not found的解決方案,需要的朋友可以參考下
    2024-01-01
  • 東方通TongWeb結(jié)合Spring-Boot使用的實(shí)現(xiàn)

    東方通TongWeb結(jié)合Spring-Boot使用的實(shí)現(xiàn)

    本文主要介紹了東方通TongWeb結(jié)合Spring-Boot使用的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • springboot-mysql-HikariCP集成過(guò)程

    springboot-mysql-HikariCP集成過(guò)程

    HiKariCP opens new window是數(shù)據(jù)庫(kù)連接池的一個(gè)后起之秀,號(hào)稱性能最好,可以完美地 PK 掉其他連接池,這篇文章主要介紹了springboot-mysql-HikariCP集成過(guò)程,需要的朋友可以參考下
    2023-07-07
  • Java數(shù)字格式類(NumberFormat類和DecimalFormat類)用法詳解

    Java數(shù)字格式類(NumberFormat類和DecimalFormat類)用法詳解

    NumberFormat類是Java提供的一個(gè)格式化數(shù)字的類,可以將一串?dāng)?shù)字轉(zhuǎn)化成自己想要的數(shù)據(jù)格式,也可以將字符串轉(zhuǎn)化成數(shù)值,下面這篇文章主要給大家介紹了關(guān)于Java數(shù)字格式類(NumberFormat類和DecimalFormat類)用法的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Spring Boot 配置和使用多線程池的實(shí)現(xiàn)

    Spring Boot 配置和使用多線程池的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Boot 配置和使用多線程池的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Mybatis?Plus?新版lambda?表達(dá)式查詢異常的處理

    Mybatis?Plus?新版lambda?表達(dá)式查詢異常的處理

    這篇文章主要介紹了Mybatis?Plus?新版lambda?表達(dá)式查詢異常的處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評(píng)論