上篇是无注解版,现在说一下最简单xml形式的版本,其实会复杂一点,还是上篇来的更简单。
首先来一下项目的结构
跟上个一比,就多了好几个文件了。
1.application.properties
在原来那些基础上要多加两行
mybatis.config-locations=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
指定mybatis的基础配置文件和实体类映射文件
2.mybatis-config.xml里面
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer" />
<typeAlias alias="Long" type="java.lang.Long" />
<typeAlias alias="HashMap" type="java.util.HashMap" />
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
</typeAliases>
</configuration>
3.UserMapper.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.nju.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.nju.entity.UserEntity">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="userName" property="userName" jdbcType="VARCHAR"/>
<result column="passWord" property="passWord" jdbcType="VARCHAR"/>
<result column="user_sex" property="userSex" javaType="com.nju.enums.UserSexEnum"/>
<result column="nick_name" property="nickName" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
id , userName, passWord, user_sex, nick_name
</sql>
<select id="getAll" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM users
</select>
<select id="getOne" resultMap="BaseResultMap" parameterType="java.lang.Integer">
SELECT
<include refid="Base_Column_List"/>
FROM users
WHERE id = #{id}
</select>
<insert id="insert" parameterType="com.nju.entity.UserEntity">
INSERT INTO
users(userName, passWord, user_sex)
VALUES (#{userName}, #{passWord}, #{userSex})
</insert>
<!--逗号逗号逗号, id啥column啥一定对应-->
<update id="update" parameterType="com.nju.entity.UserEntity">
UPDATE users
SET
<if test="userName != null">userName = #{userName},</if>
<if test="passWord != null">passWord = #{passWord},</if>
nick_name = #{nickName}
WHERE
id = #{id}
</update>
<!--空格空格空格-->
<delete id="delete" parameterType="java.lang.Integer">
DELETE FROM users
WHERE
id = #{id}
</delete>
</mapper>
后来跑的时候发现我在这里出了好多错,一个是id的jdbc是INTEGER,先写了INT,写了Interger,又写INTERGER,最后终于写对了,我滴天;然后是一定要注意sql语句,逗号空格的不要忘记;最后还有,凑巧发现
<delete id="delete"parameterType="java.lang.Integer">
和这句
<delete id="delete" parameterType="java.lang.Integer">
是有区别的,下面才是对的
4.mapper里面定义接口
public interface UserMapper {
List<UserEntity> getAll();
UserEntity getOne(int id);
void insert(UserEntity user);
void update(UserEntity user);
void delete(int id);
}
就是这样,具体的test跟上次差大不多,就不贴了。具体可以看我的源码