最初我用的是注解来操控数据库(注释掉的部分)
@Mapper
public interface ThreadMapper {
// @Select("SELECT * FROM thread LIMIT #{page}, #{size}")
List<Thread> getListByPage(@Param("page") int page, @Param("size") int size);
// @Select("SELECT * FROM thread WHERE user_id = #{userId} LIMIT #{page}, #{size}")
List<Thread> getListByPageAndUserId(@Param("page") int page, @Param("size") int size, @Param("userId") int userId);
// @Insert("Insert into thread(user_id,title,content,create_time,update_time)" +
// " values(#{userId},#{title},#{content},now(),now())")
void addInfo(@Param("userId")int userId, @Param("title")String title, @Param("content")String content);
}
但是后面测试的时候发现映射出错(就是数据库与实体类没完全对上)
{
"code": 0,
"message": "操作成功",
"data": [
{
"id": 2,
"title": "123456",
"content": "123",
"userId": 0,
"creatTime": null,
"updateTime": null
}
]
}
解决办法:
第一种:
把数据库字段与实体类设为一样的(我没试过)
第二种:
用xml文件来配置映射(上步骤)
1、
mybatis:
type-aliases-package: usx.xwt.taotao.domain //实体类
mapper-locations: classpath:/mapper/*.xml //xml文件
这需要写在resource文件的配置文件下(我这里是.yml)
2、
<?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="usx.xwt.taotao.mapper.ThreadMapper">
<resultMap id="threadResultMap" type="Thread">
<id property="id" column="id"/>
<result property="title" column="title"/> //映射
<result property="content" column="content"/>
<result property="userId" column="user_id"/>
<result property="createTime" column="create_time" javaType="java.time.LocalDateTime"/>
<result property="updateTime" column="update_time" javaType="java.time.LocalDateTime"/>
</resultMap>
<select id="getListByPageAndUserId" resultMap="threadResultMap">
SELECT * FROM thread WHERE user_id = #{userId} LIMIT #{page}, #{size}
</select>
<select id="getListByPage" resultMap="threadResultMap">
SELECT * FROM thread LIMIT #{page}, #{size}
</select>
<insert id="addInfo">
Insert into thread(user_id,title,content,create_time,update_time) values(#{userId},#{title},#{content},now(),now())
</insert>
</mapper>
3、这里的方法名需要与上面的数据库语句的id对应(记得加注解)
@Mapper
public interface ThreadMapper {
List<Thread> getListByPage(@Param("page") int page, @Param("size") int size);
List<Thread> getListByPageAndUserId(@Param("page") int page, @Param("size") int size, @Param("userId") int userId);
void addInfo(@Param("userId")int userId, @Param("title")String title, @Param("content")String content);
}