makejavas / EasyCode

基于IntelliJ IDEA开发的代码生成插件,支持自定义任意模板(Java,html,js,xml)。只要是与数据库相关的代码都可以通过自定义模板来生成。支持数据库类型与java类型映射关系配置。支持同时生成生成多张表的代码。每张表有独立的配置信息。完全的个性化定义,规则由你设置。
MIT License
1.04k stars 328 forks source link

默认模版遇到的mybatis mapper多参数未识别问题 #107

Open yegetables opened 1 year ago

yegetables commented 1 year ago

user表 name,uid,age 生成的Dao是List<User> queryAllByLimit(User user, @Param("pageable") Pageable pageable);,只有pageable 加了注解。mapper是这样的

<select id="queryAllByLimit" resultMap="UserMap">
        select
          name, uid, age
        from user
        <where>
            <if test="name != null and user.name != ''">
                and name = #{name}
            </if>
            <if test="uid != null">
                and uid = #{uid}
            </if>
            <if test="age != null">
                and age = #{age}
            </if>
        </where>
        limit #{pageable.offset}, #{pageable.pageSize}
    </select>

启动报错org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [pageable, user, param1, param2]

修改模版,List<User> queryAllByLimit(@Param("user") User user, @Param("pageable") Pageable pageable); 更改mapper时添加user.uid/user.name/user.age前缀 解决。

疑问,为什么模版中多参时不全加上@Param注解呢? jdk17 sringboot 3.0.6