关于mybatis的重要准备工作,请看MyBatis 的注解实现方法
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结尾的文件
在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 id="insert">
insert into userinfo(username,password,age,gender)
values(#{username},#{password},#{age},#{gender})
</insert>
<delete id="DeleteByID">
delete from userinfo where id=#{id}
</delete>
<select id="selectAll" resultType="com.example.demo.model.UserInfo">
select * from userinfo
</select>
这里的resultType也是全限定类名
这里也存在注解中存在的问题,数据格式不同
使用下面的标签即可解决
<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 id="Update">
update userinfo set age=#{age} where username=#{username}
</update>
将一些重复率过高的代码通过sql标签包裹起来
使用时通过include来调用
<sql id="baseSelect">
select * from userinfo
</sql>
<select id="selectAllBYOrder" resultMap="xmlBaseMap">
<include refid="baseSelect"></include>
order by id ${sort}
</select>