<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Mybatis使用簡述

      什么是 MyBatis?

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

      MyBatis 的核心特點:

      簡化了 JDBC 的復雜操作

      支持動態 SQL,能夠根據條件靈活構建查詢語句

      提供了強大的映射機制,支持復雜的對象關系映射

      Spring 等主流框架無縫集成

      學習曲線平緩,配置靈活

       

      為什么選擇 MyBatis?

      與其它持久層框架的對比

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

      主要優勢:

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

      性能優化:直接控制 SQL 語句,便于性能調優

      簡化開發:減少了大量 JDBC 模板代碼

      易于學習:學習曲線平緩,上手快速

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

       

       

      環境搭建

      創建springboot項目

      屏幕截圖 2025-10-28 164451

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

      屏幕截圖 2025-10-28 164546

       連接數據源

      72ef5423-bc2e-4a4a-b659-db516725fa58

       

      屏幕截圖 2025-10-28 192902

       建立數據庫

      范例代碼:

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

      范例效果:

      屏幕截圖 2025-10-28 181527

       若已有數據庫,則直接連接

      bf14800f-7189-4630-b774-ec6a16e201b3

       在application.properties文件中配置數據庫連接信息:

      屏幕截圖 2025-10-28 193852

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

      實體類設計

      MyBatis 中,實體類對應數據庫中的表結構。良好的實體類設計是使用 MyBatis 的基礎。

       

      @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 學工主管 , 4 教研主管 , 5 咨詢師
          private LocalDate entrydate; //入職日期
          private Integer deptId; //部門ID
          private LocalDateTime createTime; //創建時間
          private LocalDateTime updateTime; //修改時間
      }

       

      Mapper 接口設計

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

       

      @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);
      
          //查詢數據總數
          @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);
      
          //根據id更新員工信息
          void update(Emp emp);
      
          //根據id查詢員工信息
          @Select("select * from emp where id = #{id}")
          Emp getById(Integer id);
      }

       

      Mapper XML 映射文件

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

       

      屏幕截圖 2025-10-28 210058

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

      <?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>

      動態 SQL:靈活構建查詢

      MyBatis 的強大特性之一就是動態 SQL,它允許你根據條件動態生成 SQL 語句。

       

      <if> 根據條件包含 SQL 片段

       

      <choose>, <when>, <otherwise>:實現類似 switch-case 的邏輯

       

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

       

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

       

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

       

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

       

      <bind>:創建變量并在當前上下文使用

       

      posted @ 2025-10-28 21:29  阿瓜不瓜  閱讀(45)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 国产一区二区三区内射高清| 99国产精品欧美一区二区三区| 亚洲国产成人自拍视频网| 国产一区二区av天堂热| 2020年最新国产精品正在播放| 92自拍视频爽啪在线观看| 极品美女aⅴ在线观看| 欧美人成精品网站播放| 中文熟妇人妻av在线| 无码帝国www无码专区色综合| 色综合网天天综合色中文| 五华县| 亚洲成人av在线资源网| 凤庆县| 国产精品久久一区二区三区| аⅴ天堂国产最新版在线中文| 一道本AV免费不卡播放| 人人妻人人澡人人爽人人精品电影 | 欧美视频网站www色| 天啦噜国产精品亚洲精品| 无码专区 人妻系列 在线| 亚洲自拍偷拍激情视频| 久久天天躁狠狠躁夜夜躁2012 | 国产欧美日韩另类精彩视频| 大地资源免费视频观看| 西西444www高清大胆| 精品久久久久久无码免费| 国产老妇伦国产熟女老妇高清| 苍井空一区二区波多野结衣av| 北条麻妃42部无码电影| 精品国产一区二区三区av性色| 99视频偷窥在线精品国自产拍| 亚洲欧美日韩综合一区二区| 久青草国产在视频在线观看| 无码日韩精品一区二区三区免费| 蜜桃臀av在线一区二区| 国产精品色三级在线观看| 中文人妻无码一区二区三区在线 | 性色av无码久久一区二区三区| 久久久精品94久久精品| 啊┅┅快┅┅用力啊岳网站|