最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis使用簡述及環(huán)境搭建

 更新時間:2025年11月07日 08:49:57   作者:阿瓜不瓜  
MyBatis是一款優(yōu)秀的Java持久層框架,它通過XML或注解的方式將 Java對象與數(shù)據(jù)庫中的記錄進行映射,本文給大家介紹Mybatis使用簡述,感興趣的朋友跟隨小編一起看看吧

什么是MyBatis?

MyBatis 是一款優(yōu)秀的 Java 持久層框架,它通過 XML 或注解的方式將 Java 對象與數(shù)據(jù)庫中的記錄進行映射。與傳統(tǒng)的 JDBC 相比,MyBatis 極大地簡化了數(shù)據(jù)庫操作代碼,讓開發(fā)者能夠更專注于業(yè)務(wù)邏輯而不是繁瑣的數(shù)據(jù)訪問細節(jié)。

MyBatis 的核心特點:

簡化了 JDBC 的復(fù)雜操作

支持動態(tài) SQL,能夠根據(jù)條件靈活構(gòu)建查詢語句

提供了強大的映射機制,支持復(fù)雜的對象關(guān)系映射

Spring 等主流框架無縫集成

學(xué)習曲線平緩,配置靈活

為什么選擇MyBatis?

與其它持久層框架的對比

相比于 Hibernate 這樣的全自動 ORM 框架,MyBatis 提供了更多的靈活性。MyBatis 允許你直接編寫原生 SQL,這在處理復(fù)雜查詢或需要優(yōu)化 SQL 性能時具有明顯優(yōu)勢。

主要優(yōu)勢:

靈活性:可以編寫原生 SQL,靈活控制查詢邏輯

性能優(yōu)化:直接控制 SQL 語句,便于性能調(diào)優(yōu)

簡化開發(fā):減少了大量 JDBC 模板代碼

易于學(xué)習:學(xué)習曲線平緩,上手快速

Spring 集成良好:可以無縫集成到 Spring 框架中

環(huán)境搭建

創(chuàng)建springboot項目

導(dǎo)入mybatis起步依賴、mysql驅(qū)動及其他需求(首次使用下載時間會較長)

連接數(shù)據(jù)源

建立數(shù)據(jù)庫

范例代碼:

-- 創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE IF NOT EXISTS demo;
USE demo;
-- 創(chuàng)建員工表
CREATE TABLE employees (
                           id INT PRIMARY KEY AUTO_INCREMENT,
                           employee_id VARCHAR(20) UNIQUE NOT NULL,
                           name VARCHAR(50) NOT NULL,
                           gender ENUM('男', '女') NOT NULL,
                           age INT,
                           department VARCHAR(50) NOT NULL,
                           position VARCHAR(50) NOT NULL,
                           salary DECIMAL(10,2),
                           hire_date DATE NOT NULL,
                           email VARCHAR(100),
                           phone VARCHAR(20),
                           address VARCHAR(200),
                           created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 插入示例數(shù)據(jù)
INSERT INTO employees (employee_id, name, gender, age, department, position, salary, hire_date, email, phone, address)
VALUES
('EMP001', '張三', '男', 28, '技術(shù)部', '軟件工程師', 15000.00, '2020-03-15', 'zhangsan@company.com', '13800138001', '北京市海淀區(qū)'),
('EMP002', '李四', '女', 32, '人力資源部', 'HR經(jīng)理', 12000.00, '2018-06-20', 'lisi@company.com', '13800138002', '北京市朝陽區(qū)'),
('EMP003', '王五', '男', 35, '財務(wù)部', '財務(wù)主管', 18000.00, '2016-09-10', 'wangwu@company.com', '13800138003', '北京市西城區(qū)'),
('EMP004', '趙六', '女', 26, '市場部', '市場專員', 8000.00, '2021-01-08', 'zhaoliu@company.com', '13800138004', '北京市東城區(qū)'),
('EMP005', '錢七', '男', 30, '技術(shù)部', '高級工程師', 20000.00, '2019-11-25', 'qianqi@company.com', '13800138005', '北京市豐臺區(qū)'),
('EMP006', '孫八', '女', 29, '銷售部', '銷售經(jīng)理', 16000.00, '2020-07-30', 'sunba@company.com', '13800138006', '北京市石景山區(qū)'),
('EMP007', '周九', '男', 27, '技術(shù)部', '前端開發(fā)', 13000.00, '2021-03-12', 'zhoujiu@company.com', '13800138007', '北京市通州區(qū)'),
('EMP008', '吳十', '女', 33, '行政部', '行政主管', 11000.00, '2017-05-18', 'wushi@company.com', '13800138008', '北京市昌平區(qū)'),
('EMP009', '鄭十一', '男', 31, '財務(wù)部', '會計', 10000.00, '2019-08-22', 'zhengshiyi@company.com', '13800138009', '北京市大興區(qū)'),
('EMP010', '王芳', '女', 25, '市場部', '市場助理', 7000.00, '2022-02-14', 'wangfang@company.com', '13800138010', '北京市房山區(qū)');

范例效果:

若已有數(shù)據(jù)庫,則直接連接

在application.properties文件中配置數(shù)據(jù)庫連接信息:

spring.application.name=demo
#驅(qū)動類名稱
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#數(shù)據(jù)庫連接的url
spring.datasource.url=jdbc:mysql://localhost:3306/demo
#連接數(shù)據(jù)庫的用戶名
spring.datasource.username=root
#連接數(shù)據(jù)庫的密碼
spring.datasource.password=1234

實體類設(shè)計

MyBatis 中,實體類對應(yīng)數(shù)據(jù)庫中的表結(jié)構(gòu)。良好的實體類設(shè)計是使用 MyBatis 的基礎(chǔ)。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
    private Integer id; //ID
    private String username; //用戶名
    private String password; //密碼
    private String name; //姓名
    private Short gender; //性別 , 1 男, 2 女
    private String image; //圖像url
    private Short job; //職位 , 1 班主任 , 2 講師 , 3 學(xué)工主管 , 4 教研主管 , 5 咨詢師
    private LocalDate entrydate; //入職日期
    private Integer deptId; //部門ID
    private LocalDateTime createTime; //創(chuàng)建時間
    private LocalDateTime updateTime; //修改時間
}

Mapper 接口設(shè)計

Mapper 接口定義了數(shù)據(jù)訪問的方法,可以使用注解完成接口的實現(xiàn)。(例如實例代碼中“分頁查詢”“查詢數(shù)據(jù)總數(shù)”“新增員工”“根據(jù)id查詢員工信息”這些功能的實現(xiàn))

@Mapper
public interface EmpMapper {
    //分頁查詢
    @Select("select * from emp limit #{start},#{pageSize}")
    List<Emp> page(Integer start, Integer pageSize);
    //條件分頁查詢
    List<Emp> list(Integer start, Integer pageSize,String name, Short gender, LocalDate begin, LocalDate end);
    //查詢數(shù)據(jù)總數(shù)
    @Select("select count(*) from emp")
    Long count();
    //批量刪除員工
    void delete(List<Integer> ids);
    //新增員工
    @Insert("insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time) " +
            "value(#{username},#{name},#{gender},#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime})")
    void save(Emp emp);
    //根據(jù)id更新員工信息
    void update(Emp emp);
    //根據(jù)id查詢員工信息
    @Select("select * from emp where id = #{id}")
    Emp getById(Integer id);
}

Mapper XML 映射文件

XML 映射文件是 MyBatis 的核心,它定義了 SQL 語句和結(jié)果映射。在sql語句較復(fù)雜的情況下,不建議使用注解實現(xiàn)mapper接口(這樣會使得代碼顯得雜亂不易閱讀),而是在XML映射文件中編寫sql語句。需要注意的是,XML映射文件的路徑名稱必須于mapper接口路徑名稱相同。(EmpMapper接口文件路徑名稱為:cn.nuist.tlias.mapper.EmpMapper,XML映射文件路徑名稱也為:cn.nuist.tlias.mapper.EmpMapper)

mapper接口中的分頁條件查詢”“批量刪除員工信息根據(jù)id更新員工信息功能在XML映射文件中實現(xiàn):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.nuist.tlias.mapper.EmpMapper">
    <select id="list" resultType="cn.nuist.tlias.pojp.Emp">
        select *
        from emp
        <where>
            <if test="name != null and name != ''">
                name like concat('%',#{name},'%')
            </if>
            <if test="gender != null">
                and gender = #{gender}
            </if>
            <if test="begin != null and end != null">
                and entrydate between #{begin} and #{end}
            </if>
        </where>
        order by update_time desc
        limit #{start},#{pageSize}
    </select>
    <delete id="delete">
        delete
        from emp
        where id in
        <foreach collection="ids" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
    <update id="update">
        update emp
        <set>
            <if test="username != null and username != ''">
                username = #{username}
            </if>
            <if test="name != null and name != ''">
                name = #{name}
            </if>
            <if test="gender != null">
                gender = #{gender}
            </if>
            <if test="image != null and image != ''">
                image = #{image}
            </if>
            <if test="job != null">
                job = #{job}
            </if>
            <if test="entrydate != null">
                entrydate = #{entrydate}
            </if>
            <if test="deptId != null">
                dept_id = #{deptId}
            </if>
            <if test="updateTime != null">
                update_time = #{updateTime}
            </if>
        </set>
        where id = #{id}
    </update>
</mapper>

動態(tài)SQL:靈活構(gòu)建查詢

MyBatis 的強大特性之一就是動態(tài) SQL,它允許你根據(jù)條件動態(tài)生成 SQL 語句。

<if>根據(jù)條件包含 SQL 片段

<choose>,<when>,<otherwise>:實現(xiàn)類似 switch-case 的邏輯

<where>:智能處理 WHERE 條件,自動去除多余的 AND/OR

<set>:用于 UPDATE 語句,智能處理 SET 子句

<foreach>:遍歷集合,常用于 IN 條件或批量操作

<trim>:更靈活的字符串修剪功能

<bind>:創(chuàng)建變量并在當前上下文使用

到此這篇關(guān)于Mybatis使用簡述及環(huán)境搭建的文章就介紹到這了,更多相關(guān)Mybatis使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring 加載多份配置文件的問題及解決方案

    Spring 加載多份配置文件的問題及解決方案

    在Spring項目中,有時候需要加載多份配置文件以簡化復(fù)雜的配置管理,解決這一問題的方法是使用spring.config.import屬性,通過這種方式,可以在主配置文件中指定額外的配置文件路徑,支持文件、classpath或URL形式的路徑,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • IDEA插件(BindED)之查看class文件的十六進制

    IDEA插件(BindED)之查看class文件的十六進制

    這篇文章主要介紹了IDEA插件(BindED)之查看class文件的十六進制,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Mybatis-plus和Mybatis出現(xiàn)版本不兼容的問題解決

    Mybatis-plus和Mybatis出現(xiàn)版本不兼容的問題解決

    MyBatis-Plus?與?MyBatis?之間的兼容性問題通常是由于版本不匹配引起的,本文主要介紹了Mybatis-plus和Mybatis出現(xiàn)版本不兼容的問題解決,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • 淺談Java中BIO、NIO和AIO的區(qū)別和應(yīng)用場景

    淺談Java中BIO、NIO和AIO的區(qū)別和應(yīng)用場景

    這篇文章主要介紹了Java中BIO、NIO和AIO的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-04-04
  • SSO單點登錄系統(tǒng)實現(xiàn)原理及流程圖解

    SSO單點登錄系統(tǒng)實現(xiàn)原理及流程圖解

    這篇文章主要介紹了SSO單點登錄系統(tǒng)實現(xiàn)原理及流程圖解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2020-12-12
  • 徹底解決Spring mvc中時間的轉(zhuǎn)換和序列化等問題

    徹底解決Spring mvc中時間的轉(zhuǎn)換和序列化等問題

    這篇文章主要介紹了徹底解決Spring mvc中時間的轉(zhuǎn)換和序列化等問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-09-09
  • Java使用Redisson分布式鎖實現(xiàn)原理

    Java使用Redisson分布式鎖實現(xiàn)原理

    Redisson分布式鎖 之前的基于注解的鎖有一種鎖是基本redis的分布式鎖,這篇文章主要介紹了Java使用Redisson分布式鎖實現(xiàn)原理,非常具有實用價值,需要的朋友可以參考下
    2018-10-10
  • Spring?JPA使用CriteriaBuilder動態(tài)構(gòu)造查詢方式

    Spring?JPA使用CriteriaBuilder動態(tài)構(gòu)造查詢方式

    這篇文章主要介紹了Spring?JPA使用CriteriaBuilder動態(tài)構(gòu)造查詢方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • IDEA2022.2的簡介、下載與安裝、配置教程

    IDEA2022.2的簡介、下載與安裝、配置教程

    IDEA是JetBrains公司推出一個集成開發(fā)工具,是Java開發(fā)工具中的翹楚,基于這個開發(fā)工具可以快速開發(fā)我們的Java相關(guān)項目,本文重點給大家介紹IDEA2022.2的簡介、下載與安裝、初步配置,感興趣的朋友一起看看吧
    2022-11-11
  • Struts 2 數(shù)據(jù)校驗功能及校驗問題的解決方案

    Struts 2 數(shù)據(jù)校驗功能及校驗問題的解決方案

    這篇文章主要介紹了Struts 2 數(shù)據(jù)校驗功能及校驗問題的解決方案的相關(guān)資料,需要的朋友可以參考下
    2016-09-09

最新評論

扎囊县| 大理市| 榕江县| 富裕县| 木里| 明水县| 无棣县| 江都市| 即墨市| 安化县| 潜江市| 西昌市| 六盘水市| 吉林市| 常山县| 千阳县| 乌兰县| 金平| 汝城县| 平遥县| 阿克陶县| 阳谷县| 璧山县| 永福县| 石城县| 山西省| 潞西市| 定兴县| 井冈山市| 门源| 茌平县| 宁乡县| 海南省| 临安市| 林西县| 乌苏市| 龙泉市| 浏阳市| 临邑县| 许昌县| 比如县|