SSM 后端开发(mybatis)

引言

        这篇文章主要记录后端开发中遇到的关于mybatis框架的一些问题

问题

        1、head_url与headUrl

        对实体进行建表的时候,对于实体的属性常常不会使用 ‘_’ 符号来命名,多采用小驼峰的方式

ublic class User {
    @JsonProperty("head_url")
    @Schema(name = "head_url", description = "头像", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String headUrl;
}

        但是在json数据中多采用 ‘_’ 符号来分割两个名词 

        前端发来的数据是以`head_url`的形式而后端user对象的属性是`headUrl`,使用JsonProperty来告诉Jackson序列化库在将对象转换为JSON时,使用`head_url`;

<insert id="addUser" parameterType="com.cloud.dto.entity.user.User">
    INSERT INTO
    user (username, password, name, phone, head_url)
    VALUES (
        #{username},
        #{password},
        #{name},
        #{phone},
        #{headUrl}
    )
</insert>

        上面的例子时一个插入sql,user后面的括号中需要使用head_url来匹配user实体中的注解,而#{headUrl}则对应的是user实体中的get/set headUrl方法。 

        2、根据id删除多条记录

        在mysql数据库中,可以通过sql语句中的`in`来对操作多条记录

DELETE
FROM
`user`
WHERE `user`.id IN (18, 19)

        但使用mybatis就需要用到一个特殊的语法—foreach

    <delete id="deleteUser" parameterType="java.util.List">
        DELETE
        FROM user
        WHERE user.id IN
        <foreach collection="userIds" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>

         将传给mybatis的参数使用collection接收,使用open、separator以及close解构集合数据,最后再通过foreach遍历

        3、Invalid bound statement (not found):com.cloud.mapper.evaluate.ProgramMapper. getProgramList

        这个问题大概的意思是mybatis无法mapper.xml文件,按照以下的顺序进行查看。

        1、查看文件结构是否正确,两个mapper目录中的组织形式要一致

        

        2、查看mapper中的函数名与mapper.xml中的id是否一致

        

        3、查看mapper、service、controller是否正确添加注释,分别没@Mapper、@Service、@RestController

        4、查看mapper.xml中的namespace是否与其本身的位置一致,我就是因为第一次创建xml文件的时候,将其放在了错误的位置,于是namespace中就是错误的路径,当调整xml文件的存放位置后,namespace并不会更改。

猜你喜欢

转载自blog.csdn.net/2201_75875170/article/details/134016335