欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis與其使用方法示例詳解

 更新時(shí)間:2025年03月07日 08:55:48   作者:ihav2carryon  
MyBatis是一個(gè)支持自定義SQL的持久層框架,通過(guò)XML文件實(shí)現(xiàn)SQL配置和數(shù)據(jù)映射,簡(jiǎn)化了JDBC代碼的編寫(xiě),本文給大家介紹MyBatis與其使用方法講解,感興趣的朋友一起看看吧

ORM

在講解Mybatis之前,我們需了解一個(gè)概念ORM(Object-Relational Mapping)對(duì)象關(guān)系映射,其是數(shù)據(jù)庫(kù)與Java對(duì)象進(jìn)行映射的一個(gè)技術(shù).通過(guò)使用ORM,我們可以不用編寫(xiě)負(fù)責(zé)的Sql語(yǔ)句,而是通過(guò)操作對(duì)象來(lái)實(shí)現(xiàn)增刪改查操作

缺優(yōu)分析

  • 優(yōu)點(diǎn)
    • 提高開(kāi)發(fā)效率,減少代碼的重復(fù)性和維護(hù)成本
    • 增加代碼的可讀性,降低復(fù)雜度
    • 對(duì)數(shù)據(jù)庫(kù)查詢的細(xì)節(jié)進(jìn)行抽象,隱藏了sql語(yǔ)句
  • 缺點(diǎn)
    • 在進(jìn)行多表聯(lián)查時(shí),或存在where條件時(shí),ORM語(yǔ)句會(huì)變得復(fù)雜

MyBatis

  • mybatis是一個(gè)支持自定義SQL的持久層框架,通過(guò)XML文件來(lái)實(shí)現(xiàn)SQL配置和數(shù)據(jù)映射,MyBatis允許開(kāi)發(fā)者手動(dòng)編寫(xiě)SQL語(yǔ)句,提高靈活性

Mybatis通過(guò)mapper文件,將sql查詢和Java對(duì)象綁定到一起,簡(jiǎn)化了JDBC代碼的編寫(xiě),手動(dòng)設(shè)置參數(shù),獲取結(jié)果集的工作

MyBatis的工作流程

  • 其分為以下幾步

MyBatis的基本使用

環(huán)境準(zhǔn)備

  • 引入依賴包:
<!--springboot的mybatis >
<dependency>    
		<groupId>org.mybatis.spring.boot</groupId>    
		<artifactId>mybatis-spring-boot-starter</artifactId>   
		<version>3.0.3</version>
</dependency>
<!-- MySQL 連接器 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.23</version>
</dependency>
  • 創(chuàng)建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>
    <!-- mybatis環(huán)境 -->
    <environments default="mysql">
        <environment id="mysql">
            <!-- 配置事務(wù)的類型 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置數(shù)據(jù)源(連接池) -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/數(shù)據(jù)庫(kù)名稱?userSSL=false&amp;serverTimezone=Asia/Shanghai"/>
                <property name="username" value="帳號(hào)"/>
                <property name="password" value="密碼"/>
            </dataSource>
        </environment>
    </environments>
    <!-- mybatis映射配置位置 -->
    <!-- 按模塊映射不同的配置文件,讓配置文件看起來(lái)更簡(jiǎn)潔 -->
    <mappers>
        <mapper resource="映射配置文件全路徑"></mapper>
    </mappers>
</configuration>
  • springboot中的application.yml
mybatis:
  # mapper配置文件
  mapper-locations: classpath:mapper/*.xml
  # resultType別名,沒(méi)有這個(gè)配置resultType包名要寫(xiě)全,配置后只要寫(xiě)類名
  type-aliases-package: com.mashang.xiaomistore.domain
  configuration:
    #下劃線自動(dòng)轉(zhuǎn)駝峰
    map-underscore-to-camel-case: true
  • 創(chuàng)建Mapper映射文件
<?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.company.mapper.StudentMapper">
    <select id="queryAll" resultType="com.company.entity.Student">
        SELECT * FROM student
    </select>
</mapper>

  • 創(chuàng)建Mapper接口:
public interface StudentMapper {
    List<Student> queryAll();
}

MyBatis日志配置

  • 引入SpringBoot中的log4j
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-log4j2 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
    <version>3.4.3</version>
</dependency>
  • 在SpringBoot中在application.ymlmybatis配置項(xiàng)中進(jìn)行配置
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.log4j.Log4jImpl
  • 配置log4j.properties文件
### 設(shè)置###
log4j.rootLogger = debug,stdout,D,E
### 輸出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 輸出DEBUG 級(jí)別以上的日志到=D://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
### 輸出ERROR 級(jí)別以上的日志到=D://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =D://logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

一個(gè)基本的mybatis的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="com.example.mapper.UserMapper">
    <!-- CRUD 配置 -->
</mapper>

CURD實(shí)現(xiàn)

select查詢

使用<select>標(biāo)簽實(shí)現(xiàn)基本查詢

<select id ="getUserById" resultType="com.company.domain.entity.User">
		SELECT * FORM user 
</select>
  • id:對(duì)應(yīng)Mapper接口中的方法名,必須一致
  • resultType:指定返回結(jié)果映射到哪個(gè)Java類
  • 傳參#{}${}的區(qū)別

    • #{}的特點(diǎn)
      • 事先進(jìn)行預(yù)編譯:使用#{}的參數(shù)會(huì)被Mybatis當(dāng)作JDBC中的?占位符
      • 防止sql注入:由于會(huì)事先進(jìn)行預(yù)編譯,Mybatis能夠防止Sql注入
      • 類型轉(zhuǎn)換:會(huì)根據(jù)參數(shù)類型進(jìn)行適當(dāng)?shù)念愋娃D(zhuǎn)換
    • ${}的特點(diǎn)
      • 字符串拼接:&{}直接將字符串進(jìn)行替換,相當(dāng)于在Sql中直接拼接傳入的參數(shù)
      • 存在sql注入的風(fēng)險(xiǎn):沒(méi)有預(yù)編譯,會(huì)引發(fā)sql注入問(wèn)題

多條件查詢

<select id="getUserByNameAndAge" resultType="User">
    SELECT * FROM user 
    WHERE name = #{name} AND age = #{age}
</select>

模糊查詢

<select>
        SELECT *
        FROM user
        WHERE name LIKE CONCAT('%', #{name}, '%')
</select>
  • 使用LIKE關(guān)鍵字和CONCAT()函數(shù)進(jìn)行查詢

insert插入

使用<insert>標(biāo)簽實(shí)現(xiàn)基本插入操作

    <insert id="insertUser" parameterType="User">
        INSERT INTO user(name, age)
        VALUES (#{name}, #{age})
    </insert>
  • parameterType:表示入?yún)㈩愋?/li>

實(shí)現(xiàn)回填自增主鍵

<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
    INSERT INTO user (name, age) 
    VALUES (#{name}, #{age})
</insert>
  • 使用userGeneratedKeyskeyProperty實(shí)現(xiàn)
  • userGeneratedKeys:表示是否啟動(dòng)自增
  • keyProperty:表示將生成的主鍵賦值給哪個(gè)java對(duì)象的哪個(gè)屬性如user.id

update更新

使用<update>標(biāo)簽實(shí)現(xiàn)基本更新

 <update id="updateUser" parameterType="User">
        UPDATE user
        SET name=#{name},
            age =#{age}
        WHERE id = #{id}
    </update>

delete刪除

使用<delete>標(biāo)簽基本查詢

    <delete id="deleteUserById" parameterType="Integer">
        DELETE
        FROM user
        WHERE id = #{id}
    </delete>

傳參方式

多參數(shù)傳參(使用@Param)

<select id="getUserByNameAndAge" resultType="User">
    SELECT * FROM user 
    WHERE name = #{name} AND age = #{age}
</select>
    User getUserByNameAndAge(
            @Param("name") String name,
            @Param("age") Integer age);
  • 當(dāng)方法有多個(gè)參數(shù)時(shí),使用@Param注解明確參數(shù)名
  • Mapper接口

對(duì)象參數(shù)

<insert id="insertUser" parameterType="User">
    INSERT INTO user (name, age) 
    VALUES (#{name}, #{age})
</insert>
void insertUser(User user);
  • 當(dāng)參數(shù)為一個(gè)Java對(duì)象時(shí),MyBatis自動(dòng)將對(duì)象屬性映射到Sql語(yǔ)句中的占位符
  • #{name}對(duì)應(yīng)user.name,#{age}對(duì)應(yīng)user.age
  • Mapper接口

Map參數(shù)

<select id="getUserByMap" resultType="User">
    SELECT * FROM user 
    WHERE name = #{name} AND age = #{age}
</select>
User getUserByMap(Map<String, Object> params);
  • 通過(guò)Map傳遞多個(gè)參數(shù)或動(dòng)態(tài)參數(shù)
  • Mapper接口

集合/數(shù)組參數(shù)

<select id="getUsersByIds" resultType="User">
    SELECT * FROM user 
    WHERE id IN
    <foreach collection="ids" item="id" open="(" separator="," close=")">
        #{id}
    </foreach>
</select>
List<User> getUsersByIds(@Param("ids") List<Integer> ids);
  • 適用于批量查詢,比如WHERE id IN (…)
  • <foreach>是動(dòng)態(tài)sql中的知識(shí)點(diǎn)等下會(huì)系統(tǒng)講解
  • Mapper接口

動(dòng)態(tài)sql

與標(biāo)簽

  • <where>:生成WHERE子句,并自動(dòng)判斷去掉開(kāi)頭多余的AND/OR關(guān)鍵字,使sql更簡(jiǎn)潔
  • <if>:用于判斷傳參條件,根據(jù)條件決定是否拼接某段SQL語(yǔ)句,適用于傳參條件不固定,只有在滿足條件時(shí)接入某個(gè)子串
<select id="getUserByCondition" resultType="User">
    SELECT * FROM user
    <where>
        <if test="name != null and name != ''">
            AND name LIKE CONCAT('%', #{name}, '%')
        </if>
        <if test="age != null">
            AND age = #{age}
        </if>
    </where>
</select>
  • 當(dāng)name為非空,會(huì)添加AND name LIKE CONCAT('%', #{name}, '%') 當(dāng)age為非空時(shí)會(huì)添加 AND age = #{age}
  • 結(jié)合標(biāo)簽使用,能自動(dòng)處理首個(gè)AND,使得SQL語(yǔ)句正確
  • 其作用在于動(dòng)態(tài)拼接SQL片段前添加或去除特點(diǎn)字符,比如前綴,后綴,以及多余的分隔符如,
  • 常用于INSERT和UPDATE語(yǔ)句,避免出現(xiàn)多余逗號(hào)

INSERT語(yǔ)句

<insert id="insertUserSelective" parameterType="User">
    INSERT INTO user
    <trim prefix="(" suffix=")" suffixOverrides=",">
        <if test="name != null">name,</if>
        <if test="age != null">age,</if>
        <if test="email != null">email,</if>
    </trim>
    VALUES
    <trim prefix="(" suffix=")" suffixOverrides=",">
        <if test="name != null">#{name},</if>
        <if test="age != null">#{age},</if>
        <if test="email != null">#{email},</if>
    </trim>
</insert>
  • 標(biāo)簽包裹字段列表和對(duì)應(yīng)值部分
  • suffixOverrides=”,” 表示自動(dòng)去除多余的逗號(hào),確保sql語(yǔ)法正確

UPDATE語(yǔ)句

  • <set>標(biāo)簽是<trim>的特性化
<update id="updateUserDynamic" parameterType="User">
    UPDATE user
    <set>
        <if test="name != null">name = #{name},</if>
        <if test="age != null">age = #{age},</if>
        <if test="email != null">email = #{email},</if>
    </set>
    WHERE id = #{id}
</update>
  • <set>標(biāo)簽內(nèi)部原理類似<trim>,會(huì)自動(dòng)去除多余逗號(hào)
  • <foreach>用于遍歷集合,數(shù)組和Map,常用于批量操作或動(dòng)態(tài)生成IN子句
  • 其主要屬性
    • collection:集合或數(shù)組名稱(可用@Param()指定對(duì)應(yīng)名稱,默認(rèn)為listarray)
    • item:循環(huán)時(shí)每個(gè)元素的別名
    • open:循環(huán)生成sql片段的前綴
    • separator:循環(huán)時(shí)的分隔符
    • close:循環(huán)生成sql片段的后綴
<select id="getUsersByIds" resultType="User">
    SELECT * FROM user
    <where>
        <if test="ids != null">
            AND id IN
            <foreach collection="ids" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
    </where>
</select>
  • 當(dāng)ids不為null時(shí),進(jìn)入<if test="ids != null">生成的sql片段為 SELECT * FROM AND WHERE id IN(#{id},#{id},…)
  • 其中標(biāo)簽遍歷集合ids,用逗號(hào)進(jìn)行分隔,并在開(kāi)頭添加(括號(hào),結(jié)尾添加)括號(hào)
  • 最終標(biāo)簽會(huì)去除第一個(gè)AND,使sql合法SELECT * FROM id WHERE IN(#{id},#{id},…)

MyBatis的映射

基本映射

用于單一的字段對(duì)應(yīng)

假設(shè)有一個(gè)user表,其中有字段id,name,age其在Java中有個(gè)簡(jiǎn)單的對(duì)應(yīng)類User,其屬性分別也是id,name,age那么在Mapper.xml進(jìn)行select查詢時(shí)

SELECT id, name, age FROM user WHERE id = #{id}
  • MyBatis會(huì)將查詢的結(jié)果中每一列值自動(dòng)賦值給User對(duì)象中相同的屬性

    • 數(shù)據(jù)庫(kù)列表的id→User對(duì)象的id
    • 數(shù)據(jù)庫(kù)列表的name→User對(duì)象的name
    • 數(shù)據(jù)庫(kù)列表的age→User對(duì)象的age

這樣可能就會(huì)出現(xiàn)一種情況,數(shù)據(jù)庫(kù)列表的列名與對(duì)象的屬性名不一致,通常使用開(kāi)啟駝峰轉(zhuǎn)換來(lái)解決→在application.yml的mybatis配置中添加如下配置:

mybatis:
    map-underscore-to-camel-case: true

一對(duì)一映射

當(dāng)查詢中需要查詢一個(gè)對(duì)象時(shí)

  • 現(xiàn)假設(shè),數(shù)據(jù)庫(kù)有兩張表一個(gè)user(用戶)表,另一個(gè)user_detail(用戶詳細(xì)信息)表,在Java中我們可以創(chuàng)建兩個(gè)類User和UserDetail類
  • 然后再創(chuàng)建一個(gè)UserVo類,其中包含User的屬性和一個(gè)UserDatail對(duì)象
public class User {
    private Integer id;
    private String name;
    private Integer age;
}
public class UserDetail {
    private Integer detailId;
    private String address;
    private String phone;
}
public class UserVo {
    private Integer id;
    private String name;
    private Integer age;
    private UserDetail userDetail;  // 一對(duì)一關(guān)系:一個(gè)用戶對(duì)應(yīng)一份詳細(xì)信息 
}

XML配置如下:

<resultMap id="userVoMap" type="com.example.UserVo">
    <id property="id" column="id"/>
    <result property="name" column="name"/>
    <result property="age" column="age"/>
    <!-- 一對(duì)一映射 -->
    <association property="userDetail" javaType="com.example.UserDetail">
        <id property="detailId" column="detail_id"/>
        <result property="address" column="address"/>
        <result property="phone" column="phone"/>
    </association>
</resultMap>
<select id="getUserVoById" resultMap="userVoMap" parameterType="int">
    SELECT u.id, u.name, u.age, ud.detail_id, ud.address, ud.phone
    FROM user u
    LEFT JOIN user_detail ud ON u.id = ud.user_id
    WHERE u.id = #{id}
</select>
  • <resultMap>標(biāo)簽
    • 用于定義一組映射規(guī)則,將查詢的結(jié)果轉(zhuǎn)換為一個(gè)指定類型的Java對(duì)象
    • 屬性
      • id:為該映射指定一個(gè)唯一標(biāo)識(shí),供其在XML中引用使用,如<resultMap id="userResultMap" type="com.example.User">
      • type:指定映射結(jié)果對(duì)應(yīng)的Java類型(對(duì)象的全路徑)
  • <result>標(biāo)簽
    • 用于將數(shù)據(jù)庫(kù)列映射到Java對(duì)象的屬性,在<resultMap>中使用
    • 屬性
      • property:Java對(duì)象中的屬性名稱,如<result property="userName" column="user_name"/>其表示將查詢到的user_name列的值賦值給userName屬性
      • cloumn:數(shù)據(jù)庫(kù)查詢結(jié)果中的列名,如column="user_name”表示sql查詢列名為user_name的值
  • <id>標(biāo)簽
    • <id>類似于<result>主要用于映射主鍵字段
    • 屬性
      • property:與<result>相同,映射到Java對(duì)象的主鍵屬性
      • column:對(duì)應(yīng)數(shù)據(jù)庫(kù)中的主鍵列名
  • <association>標(biāo)簽
    • 表示一個(gè)一對(duì)一關(guān)連
    • 當(dāng)查詢到結(jié)果時(shí),MyBatis會(huì)將用戶的基本字段{id,name,age}直接映射到UserVo中,同時(shí)將詳細(xì)信息{detail_id,address,phone}封裝為一個(gè)UserDetail對(duì)象,并賦值到UserVo的userDetail對(duì)象中

一對(duì)多映射

提供用于有列表對(duì)象的查詢

現(xiàn)假設(shè)一個(gè)老師(Teacher)類和一個(gè)學(xué)生(student)類,一個(gè)老師可以對(duì)應(yīng)多個(gè)學(xué)生,在Java中我們可以設(shè)計(jì)Teacher類, 使用List屬性來(lái)存放老師的所有學(xué)生

public class Teacher {
    private Integer id;
    private String teacherName;
    private Integer age;
    private List<Student> students; // 一對(duì)多關(guān)系:一個(gè)老師對(duì)應(yīng)多個(gè)學(xué)生
}
public class Student {
    private Integer id;
    private String name;
    private Integer age;
}

XML配置如下:

<resultMap id="teacherMap" type="com.example.Teacher">
    <id property="id" column="teacher_id"/>
    <result property="teacherName" column="teacher_name"/>
    <result property="age" column="teacher_age"/>
    <!-- 一對(duì)多映射 -->
    <collection property="students" ofType="com.example.Student">
        <id property="id" column="student_id"/>
        <result property="name" column="student_name"/>
        <result property="age" column="student_age"/>
    </collection>
</resultMap>
<select id="getTeacherWithStudents" resultMap="teacherMap" parameterType="int">
    SELECT t.id as teacher_id, t.teacher_name, t.age as teacher_age,
           s.id as student_id, s.name as student_name, s.age as student_age
    FROM teacher t
    LEFT JOIN student s ON t.id = s.teacher_id
    WHERE t.id = #{id}
</select>
  • <collection>標(biāo)簽:用于表示一對(duì)多關(guān)系,把查詢結(jié)果中的學(xué)生記錄封裝成一個(gè)列表,并賦值到Teacher對(duì)象中的student屬性

到此這篇關(guān)于MyBatis與其使用方法講解的文章就介紹到這了,更多相關(guān)MyBatis使用方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java模板引擎Thymeleaf和前端vue的區(qū)別及說(shuō)明

    java模板引擎Thymeleaf和前端vue的區(qū)別及說(shuō)明

    這篇文章主要介紹了java模板引擎Thymeleaf和前端vue的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • java實(shí)現(xiàn)簡(jiǎn)單的客戶信息管理系統(tǒng)

    java實(shí)現(xiàn)簡(jiǎn)單的客戶信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單的客戶信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 基于Jpa中ManyToMany和OneToMany的雙向控制

    基于Jpa中ManyToMany和OneToMany的雙向控制

    這篇文章主要介紹了Jpa中ManyToMany和OneToMany的雙向控制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 百度翻譯API使用詳細(xì)教程(前端vue+后端springboot)

    百度翻譯API使用詳細(xì)教程(前端vue+后端springboot)

    這篇文章主要給大家介紹了關(guān)于百度翻譯API使用的相關(guān)資料,百度翻譯API是百度面向開(kāi)發(fā)者推出的免費(fèi)翻譯服務(wù)開(kāi)放接口,任何第三方應(yīng)用或網(wǎng)站都可以通過(guò)使用百度翻譯API為用戶提供實(shí)時(shí)優(yōu)質(zhì)的多語(yǔ)言翻譯服務(wù),需要的朋友可以參考下
    2024-02-02
  • 詳解Java刪除Map中元素java.util.ConcurrentModificationException”異常解決

    詳解Java刪除Map中元素java.util.ConcurrentModificationException”異常解決

    這篇文章主要介紹了詳解Java刪除Map中元素java.util.ConcurrentModificationException”異常解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • IDEA啟動(dòng)tomcat狀態(tài)404的解決

    IDEA啟動(dòng)tomcat狀態(tài)404的解決

    在使用Idea進(jìn)行Java?Web開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)遇到Tomcat出現(xiàn)404錯(cuò)誤的問(wèn)題,本文就來(lái)介紹了IDEA啟動(dòng)tomcat狀態(tài)404的解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Java 添加、修改、讀取、復(fù)制、刪除Excel批注的實(shí)現(xiàn)

    Java 添加、修改、讀取、復(fù)制、刪除Excel批注的實(shí)現(xiàn)

    這篇文章主要介紹了Java 添加、修改、讀取、復(fù)制、刪除Excel批注的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Java如何接收并解析HL7協(xié)議數(shù)據(jù)

    Java如何接收并解析HL7協(xié)議數(shù)據(jù)

    文章主要介紹了HL7協(xié)議及其在醫(yī)療行業(yè)中的應(yīng)用,詳細(xì)描述了如何配置環(huán)境、接收和解析數(shù)據(jù),以及與前端進(jìn)行交互的實(shí)現(xiàn)方法,文章還分享了使用7Edit工具進(jìn)行調(diào)試的經(jīng)驗(yàn),并記錄了一個(gè)常見(jiàn)的解析問(wèn)題及其解決方法
    2024-12-12
  • java操作(DOM、SAX、JDOM、DOM4J)xml方式的四種比較與詳解

    java操作(DOM、SAX、JDOM、DOM4J)xml方式的四種比較與詳解

    java中四種操作(DOM、SAX、JDOM、DOM4J)xml方式的比較與詳解
    2008-10-10
  • Java對(duì)List進(jìn)行排序的方法總結(jié)

    Java對(duì)List進(jìn)行排序的方法總結(jié)

    在Java中,對(duì)List進(jìn)行排序是一項(xiàng)常見(jiàn)的任務(wù),Java提供了多種方法來(lái)對(duì)List中的元素進(jìn)行排序,本文將詳細(xì)介紹如何使用Java來(lái)實(shí)現(xiàn)List的排序操作,涵蓋了常用的排序方法和技巧,需要的朋友可以參考下
    2024-07-07

最新評(píng)論