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: truemapper-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>