Spring -- 使用XML开发MyBatis


T04BF
👋专栏: 算法|JAVA|MySQL|C语言
🫵 今天你敲代码了吗

文章目录

MyBatis XML配置文件开发

实际上,除了使用注解的方式,MyBatis开发还能使用XML的方式,也就是将SQL语句写在XML配置文件里面

配置连接字符串和MyBatis

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


# 配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件
mybatis:
mapper-locations: classpath:mapper/**Mapper.xml

写Mapper层代码

分为两个部分

  1. 方法定义Interface
  2. 方法实现:XXX.xml
添加mapper接口
java 复制代码
package org.jwcb.je0725_mybatis_xml.mapper;

import org.jwcb.je0725_mybatis_xml.entity.UserInfo;

import java.util.List;

public interface UserInfoMapper {
    List<UserInfo> queryAllUser(); 
}
添加UserInfoXmLMapper.xml

MyBatis固定xml格式:

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="org.jwcb.je0725_mybatis_xml.mapper.UserInfoMapper">
</mapper>

尝试一下执行select操作:

xml 复制代码
<mapper namespace="org.jwcb.je0725_mybatis_xml.mapper.UserInfoMapper">
  <select id="queryAllUser" resultType="org.jwcb.je0725_mybatis_xml.entity.UserInfo">
    select * from userinfo
  </select>
</mapper>

执行结果:

  • <mapper>标签:需要指定namespace属性,表示命名空间,值为mapper接口的**全限定类名, **包括全包名.类名
  • <select>查询标签:用来执行数据库的查询操作
    • id:是和interface中定义的方法名一致,表示对接口的具体实现方法
    • resultType:是返回的数据类型,也就是UserInfo

我们会发现,出现了返回的一些值为null的情况,这种情况与上一篇文章一致,是由于数据库列名和java实体类属性名不一致导致的

此时我们同样需要对起来

在XML中:

xml 复制代码
<mapper namespace="org.jwcb.je0725_mybatis_xml.mapper.UserInfoMapper">

  <resultMap id="XMLBaseMap" type="org.jwcb.je0725_mybatis_xml.entity.UserInfo">
    <result column="delete_flag" property="deleteFlag"></result>
    <result column="create_time" property="createTime"></result>
    <result column="update_time" property="updateTime"></result>
  </resultMap>

  <select id="queryAllUser2" resultMap="XMLBaseMap">
    select * from userinfo
  </select>
</mapper>

此时的执行结果就是正确的了

建议将其余的,即使命名一致,也都写上对应关系

同时,上一篇文章提到的起别名/开启驼峰命名一样适用

操作数据库

INSERT
xml 复制代码
<insert id="insertUser">
    insert into userinfo (username,`password`,age,gender,phone) values (#{userinfo.username},
    #{userinfo.password},#{userinfo.age},#{userinfo.gender},#{userinfo.phone})
</insert>

在接口中:

java 复制代码
@Mapper
public interface UserInfoMapper {
    Integer insertUser(@Param("userinfo") UserInfo userInfo);
}

测试用例:

返回自增ID

XML文件设置 useGeneratedKeys 和 keyProperty 属性

xml 复制代码
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
  insert into userinfo (username,`password`,age,gender,phone) values (#{userinfo.username},
  #{userinfo.password},#{userinfo.age},#{userinfo.gender},#{userinfo.phone})
</insert>

此时返回值直接在userinfo.id里面取就行了

DELETE & UPDATE
xml 复制代码
<delete id="deleteUser">
  delete from userinfo where id = #{id}
</delete>


<update id="updateUser">
  update userinfo set phone = #{phone} where id = #{id}
</update>
java 复制代码
Integer updateUser(UserInfo userInfo);
Integer deleteUser(UserInfo userInfo);



感谢您的访问!!期待您的关注!!!


T04BF
🫵 今天记得敲代码

相关推荐
while(1){yan}13 小时前
Mybatis基础(详解)
spring boot·spring·java-ee·mybatis
一直都在57214 小时前
Spring框架:AOP
java·后端·spring
多多*16 小时前
2026年1月3日八股记录
java·开发语言·windows·tcp/ip·mybatis
座山雕~19 小时前
spring
java·后端·spring
草原印象19 小时前
Spring、SpringMVC、Mybatis框架整合实战视频课程
java·spring·mybatis
雨中飘荡的记忆21 小时前
MyBatis映射器模块详解
mybatis
又是忙碌的一天1 天前
Spring IOC:依赖注入和bean的生命周期
java·后端·spring
计算机学姐1 天前
基于SpringBoot的个人健康管理系统【2026最新】
java·spring boot·后端·mysql·spring·intellij-idea·mybatis
独自破碎E1 天前
Spring是怎么解决循环依赖的?
java·后端·spring
源码获取_wx:Fegn08951 天前
基于springboot + vue酒店预约系统
java·vue.js·spring boot·后端·spring