XML配置
要使用MyBatis的XML,首先得在application.properties
文件中添加配置mybatis.mapper-locations
,这个配置用于指定MyBatis Mapper XML文件路径,一般来说这个路径和DAO包路径一致,又因为代码以外的文件存放在resources文件目录下:
mybatis.mapper-locations=classpath:src/main/resources/com/youkeda/comment/dao/*.xml
com.youkeda.comment.dao是我的包名
MyBatis XML Mapper
一个DAO类对应一个DAO.xml文件,比如UserDAO.java对应UserDAO.xml
- 头信息
创建完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节点比如:
<?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.youkeda.comment.dao.UserDAO">
</mapper>
顺序不能错乱
namespace这个是命名空间的含义,一般是mapper所对应的DAO接口的全称
- resultMap
用于处理表和DO对象的属性映射,确保表中每个字段都有属性可以匹配
<?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.youkeda.comment.dao.UserDAO">
<resultMap id="userResultMap" type="com.youkeda.comment.dataobject.UserDO">
<id column="id" property="id"/>
<result column="user_name" property="userName"/>
</resultMap>
</mapper>
resultMap节点在mapper根节点内
- id
唯一标示一般我们命名规则是xxxResultMap用于确保唯一 - type
对应的DO类完整路径
子节点
-
id
设置数据库主键字段信息,column属性对应的表的字段名称,property对于的是DO属性名称 -
result
设置数据库其他字段信息,column属性对应的表的字段名称,property对于的是DO属性名称
MyBatis XML Insert语句
首先新增一个add方法:
package com.youkeda.comment.dao;
import com.youkeda.comment.dataobject.UserDO;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface UserDAO {
int add(UserDO userDO);
}
然后打开UserDAO.xml文件添加insert语句,在mapper节点下添加insert节点:
<insert id="add" parameterType="com.youkeda.comment.dataobject.UserDO" >
INSERT INTO user (user_name, pwd, nick_name,avatar,gmt_created,gmt_modified)
VALUES(#{userName}, #{pwd}, #{nickName}, #{avatar},now(),now())
</insert>
-
id
同DAO类的方法名,同一个xml内要唯一 -
parameterType
用于传递参数类型,一般和方法的参数类型一致
如果同时获得插入的主键id值要配置useGeneratedKeys、keyProperty和@Options一样
MyBatis XML Update/Delete语句
在xml文件中添加update节点:
<update id="update" parameterType="com.youkeda.comment.dataobject.UserDO">
update user set nick_name=#{nickName},gmt_modified=now() where id=#{id}
</update>
在xml文件中添加delete节点:
<delete id="delete">
delete from user where id=#{id}
</delete>
这里的delete节点并没有配置parameterType属性,因为;
int delete(@Param("id") long id);
这个方法的参数是由@Param
注解组成,MyBatis默认的parameterType
类型就是Map,所以可以省略
MyBatis XML Select语句
总结基于XML模式的开发顺序:
- 创建DO对象
- 创建DAO对象,配置
@Mapper
注解 - 创建XML文件,完成
resultMap
配置 - 创建DAO接口方法
- 创建相应的XML语句
在xml文件`增加select节点:
<select id="findAll" resultMap="userResultMap">
select * from user
</select>
<select id="findByUserName" resultMap="userResultMap">
select * from user where user_name=#{userName} limit 1
</select>
这里多使用了一个属性
resultMap
这个值一般配置为该XML文件下的resultMap
节点的id值