MyBatis 的XML实现方法
- MyBatis 的XML实现方法
- 前情提示
- 创建mapper接口
- 添加配置
- 创建xml文件
- 操作数据库
- insert标签
- delete标签
- select标签
- resultMap标签
- update标签
- sql标签,include标签
MyBatis 的XML实现方法
前情提示
关于mybatis的重要准备工作,请看MyBatis 的注解实现方法
创建mapper接口
package com.example.demo.mapper;
import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserInfoXMLMapper {
List<UserInfo> selectAll();
List<UserInfo> selectAll2();
Integer insert(UserInfo userInfo);
Integer DeleteByID(Integer id);
Integer Update(UserInfo userInfo);
List<UserInfo> selectAllBYOrder(String sort);
}
添加配置
mybatis:
configuration:
map-underscore-to-camel-case: true
mapper-locations: classpath:mapper/**Mapper.xml
mapper-locations: classpath:mapper/**Mapper.xml
中的mapper
表示resources
下的包,Mapper.xml
表示mapper下的以Mapper.xml结尾的文件
创建xml文件
在resources
下创建mapper包,在mapper下创建以Mapper.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.demo.mapper.UserInfoXMLMapper">
</mapper>
图中需要填写的是之前创建的mapper接口的全限定类名加方法名
操作数据库
xml中的标签对应前面mapper接口中定义的方法
insert标签
<insert id="insert">
insert into userinfo(username,password,age,gender)
values(#{username},#{password},#{age},#{gender})
</insert>
delete标签
<delete id="DeleteByID">
delete from userinfo where id=#{id}
</delete>
select标签
<select id="selectAll" resultType="com.example.demo.model.UserInfo">
select * from userinfo
</select>
这里的resultType也是全限定类名
这里也存在注解中存在的问题,数据格式不同
使用下面的标签即可解决
resultMap标签
<resultMap id="xmlBaseMap" type="com.example.demo.model.UserInfo">
<id column="id" property="id"></id>
<result column="delete_flag" property="deleteFlag"></result>
<result column="create_time" property="createTime"></result>
<result column="update_time" property="updateTime"></result>
</resultMap>
<select id="selectAll2" resultMap="xmlBaseMap">
select * from userinfo
</select>
update标签
<update id="Update">
update userinfo set age=#{age} where username=#{username}
</update>
sql标签,include标签
将一些重复率过高的代码通过sql标签包裹起来
使用时通过include来调用
<sql id="baseSelect">
select * from userinfo
</sql>
<select id="selectAllBYOrder" resultMap="xmlBaseMap">
<include refid="baseSelect"></include>
order by id ${sort}
</select>