亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

MyBatis-Plus的簡介以及基礎操作介紹

發布時間:2021-09-08 07:41:44 來源:億速云 閱讀:216 作者:chen 欄目:開發技術

這篇文章主要介紹“MyBatis-Plus的簡介以及基礎操作介紹”,在日常操作中,相信很多人在MyBatis-Plus的簡介以及基礎操作介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MyBatis-Plus的簡介以及基礎操作介紹”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

目錄
  •  一、MyBatis-Plus簡介(來自官網)

  • 二、快速開始

  • 三、通用CRUD

    • 3.1 insert(插入操作)

    • 3.2 updateById(更新操作)

    • 3.3 查詢操作——各種select

    • 3.4 刪除操作——各種delete

  • 附加1:如果表名或者表中屬性的名稱與我們實體類的名稱不同解決方法

     一、MyBatis-Plus簡介(來自官網)

    MyBatis-Plus,簡稱MP,是一個MyBatis的增強工具,在MyBatis的基礎上只做增強不做修改,為簡化開發、提高效率而生。

    特性:

    • 無侵入:只做增強不做改變,引入它不會對現有工程產生影響,如絲般順滑

    • 損耗小:啟動即會自動注入基本 CURD,性能基本無損耗,直接面向對象操作

    • 強大的 CRUD 操作:內置通用 Mapper、通用 Service,僅僅通過少量配置即可實現單表- 大部分 CRUD 操作,更有強大的條件構造器,滿足各類使用需求

    • 支持 Lambda 形式調用:通過 Lambda 表達式,方便的編寫各類查詢條件,無需再擔心字段寫錯

    • 支持主鍵自動生成:支持多達 4 種主鍵策略(內含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題

    • 支持 ActiveRecord 模式:支持 ActiveRecord 形式調用,實體類只需繼承 Model 類即可進行強大的 CRUD 操作

    • 支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )

    • 內置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用

    • 內置分頁插件:基于 MyBatis 物理分頁,開發者無需關心具體操作,配置好插件之后,寫分頁等同于普通 List 查詢

    • 分頁插件支持多種數據庫:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多種數據庫

    • 內置性能分析插件:可輸出 SQL 語句以及其執行時間,建議開發測試時啟用該功能,能快速揪出慢查詢

    • 內置全局攔截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規則,預防誤操作

    二、快速開始

    步驟一、新建數據庫表,寫對應的JavaBean類。
    首先我們還是使用我們之前Mybatis建的student表吧。(這里,四個屬性的名稱前面的s_被我又去掉了)

    MyBatis-Plus的簡介以及基礎操作介紹

    然后為我們的表格創建一個Bean。

    package com.example.po;
    
    public class Student {
        private Integer id;
        private String name;
        private String email;
        private Integer age;
    
        public Student() {
        }
    
        public Student(Integer id, String name, String email, Integer age) {
            this.id = id;
            this.name = name;
            this.email = email;
            this.age = age;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Student{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", email='" + email + '\'' +
                    ", age=" + age +
                    '}';
        }
    }

    步驟二、添加依賴

    mybatis和mybatis-plus會自動維護我們的mybatis 以及mybatis-spring相關的依賴

     <dependencies>
            <!--mybatisPlus-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus</artifactId>
                <version>3.4.3</version>
            </dependency>
            <!--junit-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.1</version>
                <scope>test</scope>
            </dependency>
            <!--log4j-->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
            <!--c3p0-->
            <dependency>
                <groupId>com.mchange</groupId>
                <artifactId>c3p0</artifactId>
                <version>0.9.5.2</version>
            </dependency>
            <!--數據庫驅動-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.26</version>
            </dependency>
            <!--spring-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.3.9</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>5.3.9</version>
            </dependency>
        </dependencies>

    步驟三、寫配置文件
    mybatis的配置文件:
    mybatis-config.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    
    <configuration>
    
    </configuration>

    log4j.xml日志

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
    
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    
        <!-- 日志輸出到控制臺 -->
        <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
            <!--編碼格式-->
            <param name="Encoding" value="UTF-8"/>
            <!-- 日志輸出格式 -->
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n"/>
            </layout>
        </appender>
    
        <logger name="java.sql">
            <level value ="debug"/>
        </logger>
        <logger name="org.apache.ibatis">
            <level value="info"/>
        </logger>
    
        <root>
            <level value="debug"/>
            <appender-ref ref="STDOUT"/>
        </root>
    </log4j:configuration>

    db.properties

    jdbc.driver=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost/mybatis?useSSL=false&serverTimezone=UTC
    jdbc.username=root
    jdbc.password=root

    applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           https://www.springframework.org/schema/context/spring-context.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx.xsd">
    
        <!--數據源-->
        <context:property-placeholder location="classpath:db.properties"/>
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driver}"/>
            <property name="jdbcUrl" value="${jdbc.url}"/>
            <property name="user" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
        </bean>
    
        <!--事務管理器-->
        <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
        <!--基于注解的事務管理-->
        <tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>
    
        <!--配置MyBatisPlus的MybatisSqlSessionFactoryBean-->
        <bean id="sqlSessionFactoryBean" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
            <!--數據源-->
            <property name="dataSource" ref="dataSource"/>
            <property name="configLocation" value="classpath:mybatis-config.xml"/>
            <!--別名處理-->
            <property name="typeAliasesPackage" value="com.example.po"/>
        </bean>
    
        <!--配置mybatis掃描mapper接口的路徑-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.example.dao"/>
        </bean>
    
    </beans>

    步驟四、集成MP(Mybatis-Plus,后邊都直接簡稱MP)
    MP的集成非常簡單,對于Spring,我們僅僅需要把Mybatis自帶的MyBatisSqlSessionFactory替換為MP自帶的即可。也就是剛才applicationContext.xml文件中的這一段:
    如果是Mybatis的話,那么class的值是org.mybatis.spring.SqlSessionFactoryBean

    MyBatis-Plus的簡介以及基礎操作介紹

    三、通用CRUD

    準備完畢,現在我們可以開始進行我們的CRUD了。(開始爽了)
    首先,說一下之前我們使用mybatis的做法吧:
    步驟:
    1、創建dao接口
    2、寫接口方法
    3、創建mapper文件,并為每個接口方法寫sql語句
    4、在mybatis的主配置文件注冊mapper

    然后我們再說一下MP的做法:
    步驟:
    1、創建dao接口,繼承BaseMapper<T>接口,<T>傳入他對應的實體類。

    就沒了?!!!沒錯,就這一部,不需要寫我們的xml文件。MP已經幫我們全都寫好了。我們直接寫測試代碼:

    3.1 insert(插入操作)

    package com.example.text;
    
    import com.example.dao.StudentDao;
    import com.example.po.Student;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class MyTest {
        private ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        private StudentDao studentDao = context.getBean("studentDao",StudentDao.class);
    
        //通用插入操作
        @Test
        public void testInsert(){
            //初始化Student
            Student student = new Student(null,"林八","linba@163.com",23);
            int num = studentDao.insert(student);
            System.out.println("成功添加"+num+"條記錄");
        }
    }

    執行后,看我們的數據庫(添加成功)

    MyBatis-Plus的簡介以及基礎操作介紹

    插入后,我們甚至可以直接獲取自增的id值如下:

    @Test
        public void testInsert(){
            //初始化Student
            Student student = new Student(null,"張飛","liubei@163.com",30);
            int num = studentDao.insert(student);
            System.out.println("成功添加"+num+"條記錄");
            //插入操作執行后,我們可以獲取自增的主鍵值
            int id = student.getId();
            System.out.println("插入的主鍵值為:"+id);
        }

    數據庫:

    MyBatis-Plus的簡介以及基礎操作介紹

    控制臺:

    MyBatis-Plus的簡介以及基礎操作介紹

    3.2 updateById(更新操作)

    直接傳入一個Student對象即可。(除id值外,其他值都可為空,為空的字段不會出現在sql語句中)
    直接寫測試方法:

      //通用更新操作
        @Test
        public void testUpdateById(){
            //初始化Student
            Student student = new Student(1004,"關羽","guanyu@qq.com",29);
            int result = studentDao.updateById(student);
            System.out.println("成功修改"+result+"條記錄");
        }

    數據庫:

    MyBatis-Plus的簡介以及基礎操作介紹

    3.3 查詢操作——各種select

    通過id查詢:selectById

     @Test
        public void testSelectById(){
            Student student = studentDao.selectById(1007);
            System.out.println(student);
        }

    顯示:

    MyBatis-Plus的簡介以及基礎操作介紹

    使用and查詢單條記錄:selectOne(返回復數記錄的話會報錯)

    @Test
        public void testSelectOne(){
        	//寫個匿名類,設置我們要查詢的組合條件的實體類
            Wrapper<Student> stu = new Wrapper<Student>() {
                @Override
                public Student getEntity() {
                    return new Student(null,"關羽",null,29);
                }
    
                @Override
                public MergeSegments getExpression() {
                    return null;
                }
    
                @Override
                public void clear() {
    
                }
    
                @Override
                public String getSqlSegment() {
                    return null;
                }
            };
            
            Student student = studentDao.selectOne(stu);
            System.out.println(student);
        }

    結果:

    MyBatis-Plus的簡介以及基礎操作介紹

    使用in通過id值查詢多條記錄(selectBatchIds)

    @Test
        public void testSelectBatchIds(){
            List<Integer> ids = new ArrayList<>();
            ids.add(1001);
            ids.add(1002);
            List<Student> students = studentDao.selectBatchIds(ids);
            for (Student stu:students){
                System.out.println(stu);
            }
        }

    顯示:

    MyBatis-Plus的簡介以及基礎操作介紹

    傳入Map通過and查詢若干條數據:selectByMap

     @Test
        public void testSelectByMap(){
            Map<String,Object> map = new HashMap<>();
            //map的鍵必須跟表中的列名相同
            map.put("s_name","張飛");
            map.put("s_age",28);
            List<Student> students = studentDao.selectByMap(map);
            for (Student stu:students){
                System.out.println(stu);
            }
        }

    結果:

    MyBatis-Plus的簡介以及基礎操作介紹

    3.4 刪除操作——各種delete

    • 通過id刪除記錄:deleteById

    • 通過多個id刪除多條記錄:deleteBatchIds

    • 通過and組合條件刪除記錄:deleteByMap

      @Test
        public void testDeleteById(){
            int result = studentDao.deleteById(1001);
            System.out.println("成功刪除"+result+"條記錄");
        }
    
        @Test
        public void testDeleteBatchIds(){
            List<Integer> ids = new ArrayList<>();
            ids.add(1002);
            ids.add(1003);
            int result = studentDao.deleteBatchIds(ids);
            System.out.println("成功刪除"+result+"條記錄");
        }
    
        @Test
        public void testDeleteByMap(){
            Map<String,Object> map = new HashMap<>();
            map.put("s_id",1005);
            map.put("s_name","劉七");
            int result = studentDao.deleteByMap(map);
            System.out.println("成功刪除"+result+"條記錄");
        }

    依次執行上面的方法,控制臺和數據庫顯示:

    MyBatis-Plus的簡介以及基礎操作介紹
    MyBatis-Plus的簡介以及基礎操作介紹
    MyBatis-Plus的簡介以及基礎操作介紹
    MyBatis-Plus的簡介以及基礎操作介紹
    MyBatis-Plus的簡介以及基礎操作介紹
    MyBatis-Plus的簡介以及基礎操作介紹

    附加1:如果表名或者表中屬性的名稱與我們實體類的名稱不同解決方法

    假如現在,我們的表名叫mp_student
    屬性名分別叫s_id,s_name,s_email,s_age。
    那么,我們就要在實體類
    1、用@TableName對實體類進行標注
    2、用@IdName對主鍵進行標注
    3、用@TableField對非主鍵進行標注
    如下:

    package com.example.po;
    
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableField;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    
    @TableName(value = "mp_student")
    public class Student {
        /*
        *   TableId標注這個是主鍵
        *   value值告訴MP這個主鍵在表中的屬性名(相同其實也可以省略不寫)
        *   type值有以下幾個,分別表示:
        *   AUTO	數據庫ID自增
        *   NONE	無狀態,該類型為未設置主鍵類型(注解里等于跟隨全局,全局里約等于 INPUT)
        *   INPUT	insert前自行set主鍵值
        *   ASSIGN_ID	分配ID(主鍵類型為Number(Long和Integer)或String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默認實現類為DefaultIdentifierGenerator雪花算法)
        *   ASSIGN_UUID	分配UUID,主鍵類型為String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默認default方法)
        * */
        @TableId(value = "s_id", type = IdType.AUTO)
        private Integer id;
        @TableField(value = "s_name")
        private String name;
        @TableField(value = "s_email")
        private String email;
        @TableField(value = "s_age")
        private Integer age;
    
        public Student() {
        }
    
        public Student(Integer id, String name, String email, Integer age) {
            this.id = id;
            this.name = name;
            this.email = email;
            this.age = age;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Student{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", email='" + email + '\'' +
                    ", age=" + age +
                    '}';
        }
    }

    注意:設置主鍵的type=AUTO的話,必須要數據庫中對主鍵設置自增,并設置自增的起始值才行。設置如下:
    選擇自己的數據庫表,然后點擊Design Table

    MyBatis-Plus的簡介以及基礎操作介紹

    選中主鍵,然后點擊下面的Auto Increment(自增)

    MyBatis-Plus的簡介以及基礎操作介紹

    點擊Option菜單項,設置自增的起始值。

    MyBatis-Plus的簡介以及基礎操作介紹

    到此,關于“MyBatis-Plus的簡介以及基礎操作介紹”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

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

    AI

    稻城县| 乌拉特后旗| 平顶山市| 弥勒县| 洛隆县| 米易县| 永昌县| 柳林县| 崇左市| 仁布县| 涡阳县| 阜宁县| 西和县| 高平市| 华安县| 上杭县| 长寿区| 武隆县| 宁陕县| 隆德县| 滦平县| 榆社县| 台北市| 伊宁县| 海原县| 浦北县| 蕲春县| 东乌珠穆沁旗| 连城县| 铁岭市| 伊宁市| 儋州市| 化州市| 巴彦县| 南川市| 额济纳旗| 古浪县| 会昌县| 康马县| 禹城市| 潼南县|