映射问题的解决办法(mybaitis)

最初我用的是注解来操控数据库(注释掉的部分)

复制代码
@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);
}
相关推荐
伊玛目的门徒2 小时前
试用leetcode之典中典 二数之和问题
java·算法·leetcode
懒鸟一枚5 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
我命由我123456 小时前
执行 Gradle 指令报错,无法将“grep”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
考虑考虑7 小时前
Sentinel安装
java·后端·微服务
XUHUOJUN7 小时前
Windows 2025架构深度分析之Stretch Cluster 延迟工程现实
windows·microsoft·架构·azure local
love530love8 小时前
将 ChatCut MCP 插件从 Codex 桌面应用移植到 WorkBuddy —— 完整适配实录
ide·人工智能·windows·视频剪辑·ai agent
凤凰院凶涛QAQ8 小时前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构
works cart9 小时前
windows常用命令
windows
掘金_答案9 小时前
上线那天,一个 ConcurrentHashMap 差点送走我的 AI 客服——3 天排查 JVM 血泪史
java·后端·架构
猿与禅9 小时前
CosId 分布式 ID 生成器完全教程:从架构原理到生产落地
java·shardingsphere·雪花算法·分布式id·高性能·cosid·号段模式