news 2026/6/18 4:30:30

MyBatis XML的方式来实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MyBatis XML的方式来实现

使用这种方式的时候我们需要在配置文件中配置 mybatis xml 的文件路径:

这里需要注意的是:resources文件夹之下的这个mapper文件夹的名字要和配置文件中classpath后端mapper的名字要保持一致。
同时以上述的配置信息为例,mapper文件夹之下的xml文件一定是要以Mapper为结尾。

在xml文件中编写SQL语句

@Mapper public interface UserInfoMapperXML { List<UserInfo> selectAll(); }
<mapper namespace="com.example.mybatis.mapper.UserInfoMapperXML"> <select id="selectAll" resultType="com.example.mybatis.model.UserInfo"> select * from user_info; </select> </mapper>

上面的接口的名字和所在的路径要和xml文件中的相对应,接口中声明的方法名也要和xml文件中的id值相对应。
xml文件中的resultType表示这个方法返回的结果中的数据元素是什么类型,本案例就是UserInfo类型。

测试代码

接下来我们生成测试类来运行一下我们的代码:

@Test void sellectAll() { System.out.println(userInfoMapperXML.selectAll()); }

新增数据

Integer insertUser(UserInfo userInfo);
<insert id="insertUser"> insert into user_info (username,password,age) VALUES(#{username},#{password},#{age}) </insert>

XMl传入参数的方式和用注解的方式是一样的:

@Test void insertUser() { UserInfo userInfo=new UserInfo(); userInfo.setPassword("12345678"); userInfo.setUsername("user1"); userInfo.setAge(18); userInfoMapperXML.insertUser(userInfo); }

我们也可以获取到自增的id

获取自增id

Integer insertUser2( @Param("Userinfo") UserInfo userInfo);
<insert id="insertUser2" useGeneratedKeys="true" keyProperty="id"> insert into user_info (username,password,age) VALUES(#{Userinfo.username},#{Userinfo.password},#{Userinfo.age}) </insert>
@Test void insertUser2() { UserInfo userInfo=new UserInfo(); userInfo.setPassword("12345"); userInfo.setUsername("user3"); userInfo.setAge(18); Integer result=userInfoMapperXML.insertUser2(userInfo); System.out.println("影响行数:"+result+",id:"+userInfo.getId()); }

更新数据

接下来我们把id为12的用户的密码改为123456:

Integer updateUser(String newpassword,Integer id);
<update id="updateUser"> update user_info set password=#{newpassword} where id=#{id} </update>
@Test void updateUser() { userInfoMapperXML.updateUser("123456",12); }


删除数据

我们把以id为12的数据删除为例:

Integer deleteUser(Integer id);
<delete id="deleteUser"> delete from user_info where id=#{id} </delete>
@Test void deleteUser() { userInfoMapperXML.deleteUser(12); }


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/16 15:55:27

平台生态:生成式AI的差异化规则与适配策略

主流AI平台的生态特征不同生成式AI平台基于其训练数据、技术架构和商业策略&#xff0c;形成了各具特色的“生态偏好”。理解这些差异是制定有效GEO策略的前提。OpenAI的ChatGPT表现出对权威来源和近期内容的明显偏好。研究显示&#xff0c;ChatGPT在回答事实性问题时&#xff…

作者头像 李华
网站建设 2026/6/14 15:58:57

8.SpringTask

8.1 定时任务定时任务即系统在特定时间执行一段代码&#xff0c;它的场景应用非常广泛&#xff1a;购买游戏的月卡会员后&#xff0c;系统每天给会员发放游戏资源。管理系统定时生成报表。定时清理系统垃圾。定时任务的实现主要有以下几种方式&#xff1a;Java自带的java.util.…

作者头像 李华
网站建设 2026/6/15 6:39:58

BIOS VS UEFI

目录标题一、整体结论先给出&#xff08;给决策用&#xff09;二、启动链路&#xff1a;这是两者本质区别1️⃣ Legacy BIOS 启动链路&#xff08;你现在这台&#xff09;关键工程特征2️⃣ UEFI 启动链路&#xff08;现代标准&#xff09;关键工程特征三、磁盘与分区模型&…

作者头像 李华
网站建设 2026/6/12 16:52:53

Flink源码阅读:状态管理

前面我们介绍了 Flink 状态的分类和应用。今天从源码层面再看一下 Flink 是如何管理状态的。State 概述 关于 State 的详细介绍可以参考 Flink学习笔记&#xff1a;状态类型和应用 和 Flink学习笔记&#xff1a;状态后端这两篇文章&#xff0c;为了方面阅读&#xff0c;这里我…

作者头像 李华
网站建设 2026/6/15 3:00:03

收藏!2026大厂校招AI岗占比超9成,大模型技能已成职场硬通货

互联网大厂2026届校招早已跳出传统招聘框架&#xff0c;演变为一场硝烟弥漫的AI人才"军备竞赛"。百度AI岗位占比突破90%的数字&#xff0c;不仅是一个招聘指标&#xff0c;更像是行业发出的明确信号&#xff1a;AI能力已从"加分项"彻底升级为进入大厂的&qu…

作者头像 李华