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

这里需要注意的是:resources文件夹之下的这个mapper文件夹的名字要和配置文件中classpath后端mapper的名字要保持一致。
同时以上述的配置信息为例,mapper文件夹之下的xml文件一定是要以Mapper为结尾。
在xml文件中编写SQL语句
java
@Mapper
public interface UserInfoMapperXML {
List<UserInfo> selectAll();
}
java
<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类型。
测试代码
接下来我们生成测试类来运行一下我们的代码:
java
@Test
void sellectAll() {
System.out.println(userInfoMapperXML.selectAll());
}
新增数据
java
Integer insertUser(UserInfo userInfo);
java
<insert id="insertUser">
insert into user_info (username,password,age) VALUES(#{username},#{password},#{age})
</insert>
XMl传入参数的方式和用注解的方式是一样的:
java
@Test
void insertUser() {
UserInfo userInfo=new UserInfo();
userInfo.setPassword("12345678");
userInfo.setUsername("user1");
userInfo.setAge(18);
userInfoMapperXML.insertUser(userInfo);
}

我们也可以获取到自增的id
获取自增id
java
Integer insertUser2( @Param("Userinfo") UserInfo userInfo);
java
<insert id="insertUser2" useGeneratedKeys="true" keyProperty="id">
insert into user_info (username,password,age)
VALUES(#{Userinfo.username},#{Userinfo.password},#{Userinfo.age})
</insert>
java
@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:
java
Integer updateUser(String newpassword,Integer id);
java
<update id="updateUser">
update user_info set password=#{newpassword}
where id=#{id}
</update>
java
@Test
void updateUser() {
userInfoMapperXML.updateUser("123456",12);
}

删除数据
我们把以id为12的数据删除为例:
java
Integer deleteUser(Integer id);
java
<delete id="deleteUser">
delete from user_info where id=#{id}
</delete>
java
@Test
void deleteUser() {
userInfoMapperXML.deleteUser(12);
}
