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

Mybatis參數(shù)處理的幾種方法小結(jié)

 更新時(shí)間:2023年08月20日 15:47:15   作者:yjg_  
在Mybatis中如何處理參數(shù)是一個(gè)非常重要的環(huán)節(jié),本文將詳細(xì)介紹 Mybatis 的參數(shù)處理機(jī)制,包括傳入?yún)?shù)和返回參數(shù)的處理方式,具有一定的參考價(jià)值,感興趣的可以了解一下

環(huán)境配置

項(xiàng)目結(jié)構(gòu)

導(dǎo)入依賴

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.10</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.projectLombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.26</version>
    </dependency>
</dependencies>

jdbc.properties文件

方便給mybatis配置文件設(shè)置值

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/hqyj03?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimeZone=Asia/Shanghai
password=yjg
username=root

mybatis配置文件

常見的配置項(xiàng)

在 MyBatis 的配置文件(通常是 mybatis-config.xml)中,可以配置多個(gè)標(biāo)簽來定義 MyBatis 的行為和功能。以下是常見的一些 <configuration> 標(biāo)簽及其含義:

  • <properties>:用于定義配置文件中使用的屬性。
  • <settings>:用于設(shè)置 MyBatis 的全局配置項(xiàng),如開啟緩存、啟用自動(dòng)生成主鍵等。
  • <typeAliases>:用于設(shè)置類型別名,簡(jiǎn)化在映射文件中的類型引用。
  • <typeHandlers>:用于配置類型處理器,用于在 Java 對(duì)象和數(shù)據(jù)庫列之間進(jìn)行類型轉(zhuǎn)換。
  • <objectFactory>:用于指定創(chuàng)建結(jié)果對(duì)象的工廠方法。
  • <plugins>:用于配置插件,可以在 MyBatis 的執(zhí)行過程中添加額外的功能或擴(kuò)展。
  • <environments>:用于配置不同的數(shù)據(jù)庫環(huán)境,包括數(shù)據(jù)源、事務(wù)管理器等。
  • <databaseIdProvider>:用于根據(jù)數(shù)據(jù)庫廠商的不同選擇不同的語句。
  • <mappers>:用于注冊(cè)映射器接口或者映射文件,讓 MyBatis 能夠找到它們并加載。

添加配置項(xiàng)一

&lt;setting name="mapUnderscoreToCamelCase" value="true"/&gt; 

是 MyBatis 的配置項(xiàng),用于設(shè)置是否將數(shù)據(jù)庫中的下劃線命名轉(zhuǎn)換為駝峰命名。
默認(rèn)情況下,MyBatis 會(huì)將數(shù)據(jù)庫中的下劃線命名方式(例如user_name)映射到 Java 對(duì)象的駝峰命名方式(例如userName)。
如果將value值 設(shè)置為 false(默認(rèn)值),則不會(huì)進(jìn)行自動(dòng)的下劃線到駝峰的轉(zhuǎn)換,需要在映射文件或代碼中手動(dòng)指定對(duì)應(yīng)的字段名稱,數(shù)據(jù)庫表字段和 Java 類中的屬性名稱需要保持一致。

添加配置項(xiàng)二

<setting name="logImpl" value="STDOUT_LOGGING"/> 

是 MyBatis 的配置項(xiàng),用于設(shè)置 MyBatis 的日志輸出實(shí)現(xiàn)。
在 MyBatis 中,可以通過配置不同的日志輸出實(shí)現(xiàn)來記錄 MyBatis 的運(yùn)行日志,包括 SQL 語句、參數(shù)值、執(zhí)行時(shí)間等信息。
將日志輸出到標(biāo)準(zhǔn)輸出(控制臺(tái))上,方便開發(fā)者在控制臺(tái)中查看日志信息。這是 MyBatis 內(nèi)置的一個(gè)基于 Java 標(biāo)準(zhǔn)庫的日志輸出實(shí)現(xiàn)。
除了 “STDOUT_LOGGING”,MyBatis 還提供了其他的日志輸出實(shí)現(xiàn)選項(xiàng),例如:

  • SLF4J_LOGGING: 將日志輸出到 SLF4J(Simple Logging Facade for Java)框架,可以配合各種日志框架(如 Logback、Log4j、Log4j2)使用。
  • LOG4J2_LOGGING: 將日志輸出到 Log4j2 日志框架。    
  • COMMONS_LOGGING: 將日志輸出到 Apache Commons Logging 日志框架。
  • LOG4J_LOGGING: 將日志輸出到 Log4j 1.x 日志框架。
  • JDK_LOGGING: 將日志輸出到 Java 標(biāo)準(zhǔn)庫的 java.util.logging 包。

添加配置項(xiàng)三

<!--設(shè)置映射類型別名-->
    <typeAliases>
       <!--設(shè)置pojo包下的類型別名-->
        <package name="com.yjg.mybatis.pojo"/>
    </typeAliases>

使用 <typeAliases> 元素來設(shè)置映射類型別名。

類型別名的作用是為 Java 類型(通常是實(shí)體類)指定一個(gè)簡(jiǎn)短的別名,以便在 XML 映射文件中使用這些別名來引用相應(yīng)的類型。

<package name="com.yjg.mybatis.pojo"/> 表示將 com.yjg.mybatis.pojo 包下的所有類都注冊(cè)為類型別名。

假設(shè)在 com.yjg.mybatis.pojo 包中有一個(gè)叫做 User 的類,它的完整類名是 com.yjg.mybatis.pojo.User。通過上述配置,我們可以在 XML 映射文件中使用 <User> 來引用該類,而無需使用完整的類名 com.yjg.mybatis.pojo.User。

配置文件完整內(nèi)容

<?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配置內(nèi)容時(shí),有順序限制-->
<configuration>
      <!--讀取jdbc.properties配置文件-->
 <properties resource="jdbc.properties"></properties>
<settings>
    <!--配置sql日志打印-->
    <setting name="logImpl" value="STDOUT_LOGGING"/>
    <!--下劃線駝峰映射stu_name映射stuName-->
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
    <!--設(shè)置映射類型別名-->
    <typeAliases>
       <!--設(shè)置pojo包下的類型別名-->
        <package name="com.yjg.mybatis.pojo"/>
    </typeAliases>
    <!--mybatis環(huán)境,default屬性指定一個(gè)環(huán)境-->
    <environments default="development">
        <!--id屬性自定義的環(huán)境唯一標(biāo)識(shí)符-->
        <environment id="development">
            <!--指定使用jdbc事務(wù)管理-->
            <transactionManager type="JDBC"/>
            <!--使用mybatis內(nèi)部帶連接池功能的數(shù)據(jù)源-->
            <dataSource type="POOLED">
                <!--獲取配置驅(qū)動(dòng)-->
                <property name="driver" value="${driver}"/>
                <!--獲取配置url-->
                <property name="url" value="${url}"/>
                <!--獲取配置賬號(hào)-->
                <property name="username" value="${username}"/>
                <!--獲取配置密碼-->
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--映射器,映射器的 XML 映射文件包含了 SQL 代碼和映射定義信息-->
    <mappers>
        <mapper resource="com/yjg/mybatis/mapper/StudentMapper.xml"/>
    </mappers>
</configuration>

編寫代碼

數(shù)據(jù)庫代碼

CREATE TABLE `student` (
  `stu_id` int(11) NOT NULL AUTO_INCREMENT,
  `stu_name` varchar(255) DEFAULT NULL,
  `stu_age` varchar(255) DEFAULT NULL,
  `stu_salary` decimal(10,2) DEFAULT NULL,
  `stu_birth` date DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`stu_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

數(shù)據(jù)顯示

實(shí)體類

import lombok.Data;
import java.util.Date;
@Data
//@Alias 注解是 MyBatis 提供的一個(gè)注解,用于為類或接口指定一個(gè)別名。
//@Alias("s")
public class Student {
    private Integer stuId;
    private String  stuName;
    private Integer stuAge;
    private Double  stuSalary;
    private Date  stuBirth;
    private Date createTime;
}

接口文件

public interface StudentMapper {
    //插入用戶
    int insertStudent();
    //查詢?nèi)款愋?
    List<Student> queryStudent();
    //通過id查詢學(xué)生,傳遞單個(gè)參數(shù)
    Student queryStudentById(Integer id);
   /*
   通過名字和age進(jìn)行查詢
     1.方法中的參數(shù)會(huì)將存儲(chǔ)到map集合中,key值設(shè)置為arg0 , arg1.....或者設(shè)置為param1, param2. ...
     2.sql語句中是通過#{map的key值}來獲取到參數(shù)值,例如#{arg0}
     3.可以通過@Param注解更改參數(shù)在map中的key
     @Param("name")可以修改名稱
   */
    Student queryStudentByNameAndAge(@Param("name") String name,@Param("age") int age);
}

映射文件

<?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="com.yjg.mybatis.mapper.StudentMapper">
    <insert id="insertStudent">
        insert into student values(null, 'zhangsan',18,' 200','2020-01-01 ' , now())
    </insert>
    <select id="queryStudent" parameterType="integer" resultType="Student">
              select * from student;
    </select>
      <!--拿到方法的形參,單個(gè)參數(shù),#{id}-->
    <select id="queryStudentById" resultType="Student">
          select * from student where stu_id=#{id}
    </select>
     <!--拿到參數(shù)的值,多個(gè)參數(shù)的時(shí)候-->
    <select id="queryStudentByNameAndAge" resultType="student">
          select * from student where stu_name=#{name} and stu_age=#{age};
    </select>
</mapper>

在 MyBatis 中,類型別名是對(duì)大小寫不敏感的。無論是使用大寫、小寫或混合大小寫,都可以正確地引用對(duì)應(yīng)的實(shí)體類。如果使用使用 <typeAliases> 元素來設(shè)置映射類型別名。將包名 com.yjg.mybatis.pojo 下的 Student 類設(shè)置為類型別名,那么在映射文件中使用 student 或 Student 都是可以的,并且都會(huì)正確地映射到對(duì)應(yīng)的實(shí)體類。

映射文件參數(shù)

  • 使用 #{paramName} 占位符:在 SQL 語句中使用 #{paramName} 占位符來表示參數(shù)。當(dāng)調(diào)用映射器接口方法時(shí),MyBatis 將自動(dòng)解析 SQL 語句,并根據(jù)方法參數(shù)的名稱和注解來匹配占位符和參數(shù),此時(shí)MyBatis 使用預(yù)編譯的方式執(zhí)行 SQL 語句,將實(shí)際的參數(shù)值填充到占位符處,并執(zhí)行查詢或更新操作。

  • 使用 ${paramName} 占位符:在 SQL 語句中使用 ${paramName} 占位符來表示參數(shù)。這種方式不會(huì)進(jìn)行預(yù)編譯,而是直接將參數(shù)的值替換到 SQL 語句中。存在 SQL 注入的風(fēng)險(xiǎn),應(yīng)謹(jǐn)慎使用。

  • 使用 @Param 注解:在方法參數(shù)上使用 @Param("paramName") 注解來指定參數(shù)的名稱。在映射文件中可以通過參數(shù)名稱來引用相應(yīng)的參數(shù)

  • 在 <select>、<update>、<insert>、<delete> 等操作標(biāo)簽中,可以通過 parameterType 屬性來明確指定傳入?yún)?shù)的類型。該屬性用于告訴 MyBatis 針對(duì)具體操作需要接收哪種類型的參數(shù)。

測(cè)試方法

public class Test1 {
    SqlSession sqlSession;
    @Before
    public void test1() throws Exception{
        InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory build = builder.build(inputStream);
       sqlSession = build.openSession(true);
    }
     //    添加數(shù)據(jù)
    @Test
    public void test2(){
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        int i = mapper.insertStudent();
        System.out.println(i);
    }
     //    查詢所有學(xué)生
    @Test
    public void test3(){
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        List<Student> students = mapper.queryStudent();
        students.forEach(System.out::println);
    }
    //    根據(jù)id查詢
    @Test
    public void test4(){
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        Student student = mapper.queryStudentById(2);
        System.out.println(student);
    }
    //    根據(jù)多個(gè)參數(shù)查詢
    @Test
    public void test5(){
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        Student student = mapper.queryStudentByNameAndAge("kun", 18);
        System.out.println(student);
    }
}

 到此這篇關(guān)于Mybatis參數(shù)處理的幾種方法小結(jié)的文章就介紹到這了,更多相關(guān)Mybatis參數(shù)處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的Stream流式操作大全

    Java中的Stream流式操作大全

    Java 8引入的Stream API提供了一種高效、簡(jiǎn)潔的集合數(shù)據(jù)處理方式,基于函數(shù)式編程思想,支持惰性求值、一次性消費(fèi)、無狀態(tài)/有狀態(tài)操作和并行處理,本文通過實(shí)例代碼介紹java中的Stream流式操作,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Spring @Value的注解使用和原理解析

    Spring @Value的注解使用和原理解析

    @Value注解在Spring開發(fā)中是一個(gè)使用很頻繁的注解,在項(xiàng)目開發(fā)中,我們通常需要讀取配置文件中的一些信息,當(dāng)然,@Value不單單能讀取配置文件,還能讀取系統(tǒng)屬性,還可以讀取其他bean的屬性,本章就來詳細(xì)介紹@Value注解的使用和對(duì)源碼進(jìn)行分析
    2023-06-06
  • springmvc處理模型數(shù)據(jù)ModelAndView過程詳解

    springmvc處理模型數(shù)據(jù)ModelAndView過程詳解

    這篇文章主要介紹了springmvc處理模型數(shù)據(jù)ModelAndView過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • JVM詳解之匯編角度理解本地變量的生命周期

    JVM詳解之匯編角度理解本地變量的生命周期

    這篇文章主要介紹了JVM詳解之匯編角度理解本地變量的生命周期,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • RocketMQ整合SpringBoot實(shí)現(xiàn)生產(chǎn)級(jí)二次封裝

    RocketMQ整合SpringBoot實(shí)現(xiàn)生產(chǎn)級(jí)二次封裝

    本文主要介紹了RocketMQ整合SpringBoot實(shí)現(xiàn)生產(chǎn)級(jí)二次封裝,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • JDK動(dòng)態(tài)代理之ProxyGenerator生成代理類的字節(jié)碼文件解析

    JDK動(dòng)態(tài)代理之ProxyGenerator生成代理類的字節(jié)碼文件解析

    這篇文章主要為大家詳細(xì)介紹了JDK動(dòng)態(tài)代理之ProxyGenerator生成代理類的字節(jié)碼文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Springboot Druid 自定義加密數(shù)據(jù)庫密碼的幾種方案

    Springboot Druid 自定義加密數(shù)據(jù)庫密碼的幾種方案

    這篇文章主要介紹了Springboot Druid 自定義加密數(shù)據(jù)庫密碼的步驟,幫助大家更好的理解和使用springboot,感興趣的朋友可以了解下
    2020-12-12
  • Spring?Boot?中的?Native?SQL基本概念及使用方法

    Spring?Boot?中的?Native?SQL基本概念及使用方法

    在本文中,我們介紹了 Spring Boot 中的 Native SQL,以及如何使用 JdbcTemplate 和 NamedParameterJdbcTemplate 來執(zhí)行自定義的 SQL 查詢或更新語句,需要的朋友跟隨小編一起看看吧
    2023-07-07
  • Maven 打包項(xiàng)目到私服 (deploy)的配置方法

    Maven 打包項(xiàng)目到私服 (deploy)的配置方法

    這篇文章主要介紹了Maven 打包項(xiàng)目到私服 (deploy)的配置方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java8中stream流的collectingAndThen方法應(yīng)用實(shí)例詳解

    Java8中stream流的collectingAndThen方法應(yīng)用實(shí)例詳解

    Java8中的Stream流提供了collectingAndThen方法,用于對(duì)歸納結(jié)果進(jìn)行二次處理,文章通過User類的數(shù)據(jù)填充,演示了如何使用該方法進(jìn)行集合去重、查找最高工資員工、計(jì)算平均工資等操作,感興趣的朋友跟隨小編一起看看吧
    2025-03-03

最新評(píng)論

盐津县| 洞头县| 双峰县| 安乡县| 阿克苏市| 敖汉旗| 望城县| 益阳市| 广安市| 开阳县| 舟曲县| 龙口市| 尖扎县| 大同县| 富平县| 雷山县| 江达县| 白玉县| 揭东县| 襄樊市| 中阳县| 龙南县| 昭苏县| 孝昌县| 兴宁市| 诸暨市| 丰镇市| 甘孜县| 洞头县| 墨脱县| 瑞安市| 宁强县| 涡阳县| 澳门| 青龙| 虹口区| 札达县| 绥中县| 金堂县| 长白| 灵川县|