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

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

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

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

MyBatis中映射文件的使用

1、配置核心文件

①引入映射文件

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

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

這里必須滿足兩個條件

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

在這里插入圖片描述

②配置typeAliases

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

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

  • 通過包設(shè)置類型別名,指定包下所有的類型將全部有用默認的別名,即類名且不區(qū)分大小寫 。
  • 要注意標簽的先后順序
<!--
		標簽的先后順序
        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ù)表

復制進MySQL數(shù)據(jù)庫中運行即可

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)建一個工具類,每次測試就不用去重新寫,直接調(diào)用獲取返回值即可

    public static SqlSession getSqlSession() {

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

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

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

            //獲取SqlSession對象 自動提交
            sqlSession = sqlSessionFactory.openSession(true);

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

添加

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

int insertUser();

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

可以將接口的方法寫在標簽的上方,方便查看。

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

測試代碼

    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è)置另外一個參數(shù)resultType或resultMap

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

resultType中應該寫實體類的全類名,但是在核心文件中配置了typeAliases,所以這里可以直接寫實體類的名字不區(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,若為字符串類型或日期類型的字段進行賦值時,需要手動加單引號;
但是#{}使用占位符賦值的方式拼接sql,此時為字符串類型或日期類型的字段進行賦值時, 可以自動添加單引號

單個字面量類型的參數(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ù)為單個的字面量類型此時可以通過#{}${}以任意的內(nèi)容獲取參數(shù)值,一定要注意${}的單引號問題

多個字面量類型的參數(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會自動把當前參數(shù)放在一個Map集合中

放在Map集合中會以兩種方式存儲數(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ù)

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

就可以獲取相對于的值,一定要注意${}的單引號問題

測試代碼

    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ù)

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

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

只需要通過#{}和${}訪問實體類中的屬性名,

就可以獲取相對于的屬性值,一定要注意${}的單引號問題

使用@Param標識參數(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注解

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

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

相關(guān)文章

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

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

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

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

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

    MyBatis攔截器的原理與使用

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

    SpringBoot上下文初始器加載過程詳解

    這篇文章主要介紹了SpringBoot上下文初始器加載過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • 一文解決pom.xml報錯Dependency "xxx" not found的問題

    一文解決pom.xml報錯Dependency "xxx" not f

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

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

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

    springboot-mysql-HikariCP集成過程

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

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

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

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

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

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

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

最新評論