MyBatis XML 配置文件之从配置规范到 CRUD 开发实践记录

 更新时间:2026年01月04日 10:52:54   作者:♡喜欢做梦  
本文介绍了MyBatis的XML配置文件的使用,包括数据库连接配置、MyBatis配置、XML文件的核心组成成分以及增删查改操作的示例,感兴趣的朋友跟随小编一起看看吧

🌅前言

MyBatis的开发方式有两种:注解、XML。下来要将的就是XML,如果想要看MyBatis注解的,可以看我上一篇文章

🌅MyBatis XML配置文件的作用

MyBatis是一款持久层框架,他支持将SQL语句与Java代码分离,XML文件就是用来编写SQL语句,配置结果映射(ResultMap)等信息载体,让代码等清晰、维护更方便。

🌅配置数据库连接字符串和MyBatis

🌄数据库配置

application.yml 配置内容

# 数据库连接配置
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

application.properties 配置内容

#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=root
  • datasource.url: 数据库连接地址;
  • datasource.username:数据库登入用户名(例root);
  • datasource.password: 数据库密码(例root);
  • datasource.driver-class-name:MySqL驱动类。

🌄MyBatis配置

application.yml 配置内容

mybatis:
  # 配置 mybatis xml 的文件路径,在 resources/mapper 创建所有表的 xml 文件
  mapper-locations: classpath:mapper/**Mapper.xml
   configuration: # 配置打印 MyBatis日志
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     map-underscore-to-camel-case: true #配置驼峰自动转换

application.properties 配置内容

# 配置 mybatis xml 的文件路径,在 resources/mapper 创建所有表的 xml 文件
mybatis.mapper-locations=classpath:mapper/**Mapper.xml
# 配置打印 MyBatis 日志
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# 配置驼峰自动转换
mybatis.configuration.map-underscore-to-camel-case=true
  • mybatis.mapper-locations:指定映射文件(XML)位置。classpath:mapper/**Mapper.xml表示resource/mapper目录以下所有以Mapper.xml为结尾的文件;
  • mybatis.configuration.log-impl:配置MyBatis的日志实现;
  • mybatis.configuration.map-underscore-to-camel-case:开启驼峰命名。

🌅XML文件的核心组成成分

以映射文件(UserInfoMapper.xml)为例

🌄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="对应的Mapper接口的全限定类名">
</mapper>
  • 示例对应的Mapper接口的全限定类名:
<mapper namespace="com.mybatis.demo.mapper.UserInfoXMLMapper">
      <!-- SQL语句   -->
</mapper>

🌄文件创建

创建Mapper接口

@Mapper
public interface UserInfoXMLMapper {
}

创建xml文件

🌅增删查改操作

🌄增(Insert)

UserInfoMapper.xml

 <insert id="insertUserInfo" parameterType="com.mybatis.demo.model.UserInfo">
        insert into user_info(username,password,age) values (#{username},#{password},#{age})
    </insert>
  • <insert>的id必须与UserInfoXMLMapper中的insertUserInfo一致;
  • parameType:入参类型(可省略),如果要写,要写全类名。

UserInfoXMLMapper接口

@Mapper
public interface UserInfoXMLMapper {
       Integer insertUserInfo(UserInfo userInfo);
}

测试

@SpringBootTest
class UserInfoXMLMapperTest {
     @Autowired
     private UserInfoXMLMapper userInfoXMLMapper;
    @Test
    void insertUserInfo() {
        UserInfo userInfo=new UserInfo();
        userInfo.setUsername("张三");
        userInfo.setPassword("123");
        userInfo.setAge(13);
        System.out.println(userInfoXMLMapper.insertUserInfo(userInfo));
    }
}

结果

添加自增主键

 </insert>
    <insert id="insertUserInfo2" parameterType="com.mybatis.demo.model.UserInfo" useGeneratedKeys="true" keyProperty="id">
        insert into user_info(username,password,age) values (#{username},#{password},#{age})
    </insert>

🌄删除(delete)

UserInfoMapper.xml

<delete id="deleteUser">
        delete from user_info where username=(#{username})
    </delete>

UserInfoXMLMapper接口

Integer deleteUser(UserInfo userInfo);

测试

@Test
    void deleteUser() {
        UserInfo userInfo=new UserInfo();
        userInfo.setUsername("张三");
        userInfoXMLMapper.deleteUser(userInfo);
    }

结果

🌄查(select)

UserInfoMapper.xml

    <select id="selectUserById" resultType="com.mybatis.demo.model.UserInfo">
        select username,password,age,phone from user_info where id=(#{id})
    </select>
  • resultType:返回值类型,如果缺少,那么参数占位符写法不规范。

UserInfoXMLMapper接口

UserInfo selectUserById(Integer id);

测试

@Test
    void selectUserById() {
        userInfoXMLMapper.selectUserById(1);
    }

结果

🌄改(update)

UserInfoMapper.xml

Integer updateUser(String username,Integer id);

UserInfoXMLMapper接口

<update id="updateUser">
        update user_info set username=#{username} where id=#{id}
    </update>

测试

 @Test
    void updateUser() {
        userInfoXMLMapper.updateUser("lisi",2);
    }

结果

到此这篇关于MyBatis XML 配置文件之从配置规范到 CRUD 开发实践记录的文章就介绍到这了,更多相关MyBatis XML 配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中的StopWatch计时利器使用指南

    Java中的StopWatch计时利器使用指南

    StopWatch通常用于测量一段代码执行所花费的时间,它能够精确地记录开始时间、结束时间,并计算出这中间的时间差,下面给大家介绍Java中的StopWatch计时利器的深度解析与使用指南,感兴趣的朋友一起看看吧
    2025-05-05
  • 详解SpringBoot中如何使用布隆过滤器

    详解SpringBoot中如何使用布隆过滤器

    这篇文章主要为大家详细介绍了在SpringBoot中如何简单在代码中使用布隆过滤器,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-09-09
  • JavaMail邮件简介及API概述第一篇

    JavaMail邮件简介及API概述第一篇

    这篇文章主要为大家详细介绍了JavaMail邮件简介及API概述第一篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 了解Java线程池执行原理

    了解Java线程池执行原理

    那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效果。下面我们来详细了解一下吧
    2019-05-05
  • Java实现图片百叶窗效果(附源码)

    Java实现图片百叶窗效果(附源码)

    在数字图像处理领域,各种特效的实现不仅能够提升图片的美观性,也能为后续的视频合成、动画制作提供基础素材,使用 Java 语言结合 AWT/Swing 或 JavaFX,可以实现对图像的像素级操作,以达到百叶窗特效,本文给大家介绍的非常详细,感兴趣的小伙伴跟着小编一起来看看吧
    2025-05-05
  • SpringBoot整合Web开发之文件上传与@ControllerAdvice

    SpringBoot整合Web开发之文件上传与@ControllerAdvice

    @ControllerAdvice注解是Spring3.2中新增的注解,学名是Controller增强器,作用是给Controller控制器添加统一的操作或处理。对于@ControllerAdvice,我们比较熟知的用法是结合@ExceptionHandler用于全局异常的处理,但其作用不止于此
    2022-08-08
  • SpringBoot使用JdbcTemplate操作数据库

    SpringBoot使用JdbcTemplate操作数据库

    这篇文章主要介绍了SpringBoot使用JdbcTemplate操作数据库,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • 一文掌握Spring的创建与使用

    一文掌握Spring的创建与使用

    这篇文章详细介绍了spring的创建与使用,文章中有详细的代码示例和图片介绍,对学习有一定的而参考价值,需要的同学可以参考一下
    2023-04-04
  • 背包问题-动态规划java实现的分析与代码

    背包问题-动态规划java实现的分析与代码

    这篇文章主要给大家介绍了关于背包问题动态规划java实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Java 信号量Semaphore的实现

    Java 信号量Semaphore的实现

    这篇文章主要介绍了Java 信号量Semaphore的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09

最新评论