91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MyBatis配置與CRUD使用的方法是什么

發布時間:2023-02-24 10:07:00 來源:億速云 閱讀:119 作者:iii 欄目:開發技術

本篇內容主要講解“MyBatis配置與CRUD使用的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“MyBatis配置與CRUD使用的方法是什么”吧!

namespace:命名空間 必須綁定一個對應Mapper接口

使用全限定名: com.yuqu.Dao.UserMapper

id:對應上面的Mapper接口下面的某一方法名

resultType:表示返回結果類型 如:com.yuqu.pojo.User

parameterType:參數類型,基本數據類型通常忽略不寫

CRUD增刪改查

增刪改切記提交事務:sqlSession.commit();

在確保已經配置好了mybatis-config.xml核心配置文件之后,我們每次需要操作sql時,就只需要操作接口UserMapper和UserMapper.xml配置文件即可

示例代碼

UserMapper.xml

<mapper namespace="com.yuqu.dao.UserMapper">
    <select id="getUserList" resultType="com.yuqu.pojo.User">
        select * from testmybatis.tb_user;
    </select>
    <select id="getUserById" parameterType="int" resultType="com.yuqu.pojo.User">
        select * from testmybatis.tb_user where id = #{id};
    </select>
    <insert id="insertUser" parameterType="com.yuqu.pojo.User">
        insert into testmybatis.tb_user (id,username,password,gender,addr) values(#{id},#{username},#{password},#{gender},#{addr});
    </insert>
    <update id="updateUser" parameterType="com.yuqu.pojo.User">
        update testmybatis.tb_user set username=#{username},password=#{password},gender=#{gender},addr=#{addr} where id = #{id};
    </update>
    <delete id="deleteUser" parameterType="int">
        delete from testmybatis.tb_user where id = #{id};
    </delete>
</mapper>

Test代碼(僅以添加為例)

    @Test
    public void testInsertUser(){
        // 獲取SqlSession
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        // 執行sql
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int res = mapper.insertUser(new User(4, "趙六", "1234", '妖', "鄭州"));
        if (res > 0){
            System.out.println("插入成功!");
            // 增刪改必須提交事務
            sqlSession.commit();
        }
    }

Map傳參

上述UserMapper.xml所示,如果參數過多時,當我們進行添加操作或者修改操作就會非常麻煩。所以,可以優化采用Map來進行可選參數。以查詢用戶selectUser為例:

// UserMapper接口
// 查詢用戶 Map入參 簡單實現模糊查詢
    int selectUser2(Map<String,Object> map);
// UserMapper.xml
<select id="selectUser2" parameterType="map" resultType="com.yuqu.pojo.User">
        select * from testmybatis.tb_user where username = #{helloName};
    </select>
// @Test
@Test
    public void testSelectUser2(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("helloName","順子");
        User user = mapper.selectUser2(map);
        System.out.println(user);
        sqlSession.close();
    }

map傳遞參數,可以直接在sql中獲取key,實現定制化參數

對象傳遞參數,直接在sql中取出sql的對象屬性。但要保證字段名相同

基本數據類型時直接在sql中獲取

模糊查詢

// UserMapper
// 模糊查詢用戶
    List<User> getUserLikeList(String value);
// UserMapper.xml
<select id="getUserLikeList" resultType="com.yuqu.pojo.User">
        select * from testmybatis.tb_user where username like #{value};
    </select>

還有一種方式就是直接把sql固定寫死,獲取用戶輸入的一個穩定的值

select * from testmybatis.tb_user where username like "%"#{value}"%";

MyBatis配置解析

核心配置文件mybatis-config.xml

參考mybatis官網給出的配置信息:

configuration(配置)
    properties(屬性)
    settings(設置)
    typeAliases(類型別名)
    typeHandlers(類型處理器)
    objectFactory(對象工廠)
    plugins(插件)
    environments(環境配置)
        environment(環境變量)
            transactionManager(事務管理器)
            dataSource(數據源)
    databaseIdProvider(數據庫廠商標識)
    mappers(映射器)

環境變量(Environments)

mybatis可以配置多種環境,但每個sqlSessionFactory智能選擇一個環境

一個數據庫對應一個SqlSessionFactory

我們可以在environments元素下配置多個環境environment,每個環境都需要設置單獨的id,當我們需要用到哪一個的時候就需要將default設置為哪一個環境的id

<environments default="development"><environments>

environments下包含

事務管理器transactionManger

<transactionManager type="JDBC">
  <property name="skipSetAutoCommitOnClose" value="true"/>
</transactionManager>

事務管理器不僅有JDBC一種,還有一種 MANAGED

<transactionManager type="MANAGED">
  <property name="closeConnection" value="false"/>
</transactionManager>

MyBatis官網提示: 如果你正在使用 Spring + MyBatis,則沒有必要配置事務管理器,因為Spring 模塊會使用自帶的管理器來覆蓋前面的配置

數據源DataSource

之前學過的比如dbcp、c3p0、druid等等。用于連接數據庫

mybatis內置了三種數據源:type="[UNPOOLED|POOLED|JND]"

UNPOOLED:表示無池連接,用完即銷毀

POOLED:有池連接,用完后回收等待下次使用。(默認情況使用)

JND:表示正常連接

屬性(Properties)

屬性可以通過外部文件配置,也可以在Properties的子元素當中配置,在Properties子元素配置如下示例:

<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

也可以通過典型的Java屬性文件進行配置,比如db.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&;useUnicode=true&;characterEncoding=UTF-8&;serverTimezone=UTC
username=root
password=123456

最后價格文件用properties標簽引入到mybatis-config.xml中,環境則更改為初始形式

<!--  引入外部資源  -->
    <properties resource="db.properties" />
<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <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>

通過官網可以知道,我們也可以將db.properties中的配置信息只寫一半,另一半在引入的同時用雙標簽閉合,在其中用properties的子標簽property重新引入即可

<properties resource="db.properties" >
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </properties>

如果同時存在于外部文件和property中,優先使用外部文件的配置信息

類型別名(typeAliases)

typeAliases用于簡化全限定名的書寫,僅限于在xml中配置

指定全限定類名別名:

<typeAliases>
   <typeAlias type="com.yuqu.pojo.User" alias="user" />
</typeAliases>

type代表全限定名,將其映射為一個簡化名稱 user。如上所示在需要用到com.yuqu.pojo.User的地方就可以替換成user

指定包名配置

<typeAliases>
   <package name="com.yuqu.pojo"/>
</typeAliases>

經此配置后,mybatis會自動查找在com.yuqu.pojo下的所需Java Bean。

在沒有對實體類添加注解用法:默認使用Bean的首字母小寫的非限定類名來作為它的別名

添加注解的用法:

@Alias("hello")
public class User {
    //...
}

接下來就可以在任何要用com.yuqu.pojo.User的地方使用hello代替

建議在實體類較少的情況下使用第一種指定全限定類名的別名

實體類較多時可以使用指定包名配置

其他的Java類型內建的別名可以參考MyBatis官網

映射器(mappers)

在定義sql映射語句之前,首先我們要告訴mybatis去哪里獲取這些語句。這個時候就需要用到映射器mappers,mybatis根據映射的路徑去找到對應的文件或者接口再去執行sql語句

映射器使用一:使用相對于類路徑的資源引用(建議使用)

<mappers>
  <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
    // 如果將Mapper文件直接放在resource下就可以改成
<mappers>
  <mapper resource="PostMapper.xml"/>
</mappers>

映射器使用二:使用class文件的完全限定類名

<mappers>
	<mapper class="org.mybatis.builder.PostMapper" />
</mappers>
  • 接口和它的Mapper配置文件必須在同一包下!

  • 接口和它的Mapper配置文件必須同名!

映射器使用使用三:將包內的映射器接口全部注冊為映射器

<mappers>
  <package name="org.mybatis.builder"/>
</mappers>
  • 接口和它的Mapper配置文件必須在同一包下!

  • 接口和它的Mapper配置文件必須同名!

生命周期和作用域

錯誤的使用生命周期和作用域會導致非常嚴重的并發問題

SqlSessionFactoryBuilder:

  • 創建SqlSessionFactory工廠使用,一旦創建了SqlSessionFactory就不再需要使用它

  • 最佳作用域是方法域(局部方法變量)

SqlSessionFactory:

  • SqlSessionFactory用于生產SqlSession實例

  • 一旦創建就應該一直存在于程序的運行期間,不要丟棄或嘗試重新創建另一個SqlSessionFactory

  • 可以采用單例模式來保證唯一的SqlSessionFactory

  • 最佳作用域是全局作用(應用作用域)

SqlSession:

  • SqlSession用于執行已映射的sql指令

  • 每個線程都有自己的SqlSession實例,因為它不是線程安全的不能被共享

  • 最佳作用域是方法域或者請求域

到此,相信大家對“MyBatis配置與CRUD使用的方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嵊泗县| 同德县| 和龙市| 游戏| 乐至县| 泸水县| 宁明县| 章丘市| 怀柔区| 石首市| 恭城| 东台市| 灵台县| 江源县| 布拖县| 伊宁市| 布尔津县| 新昌县| 新泰市| 通江县| 息烽县| 伊吾县| 花莲市| 环江| 酒泉市| 蓝田县| 涞源县| 繁峙县| 台安县| 澎湖县| 竹溪县| 大石桥市| 广西| 蕉岭县| 永清县| 什邡市| 顺昌县| 察隅县| 鄄城县| 阿克陶县| 长兴县|