17

我试图避免在 mybatis3 中使用额外的 xml 来定义映射器。注释正好适合。

我对@SelectProvider/@InsertProvider/etc 的使用有点困惑。不要以为网上有很多资源可以指导我。

基本上,我想在mybatis3中找到alternative for的注解版本。

例如,我有一个 xml 映射器,我想将其转换为使用注释

<select ...>
  <where>
    <if cause.....>
    </if>
    <if cause......>
    </if>
  </where>
</select>

谁能提供包括代码在内的具体答案/解决方案?

提前致谢!

4

2 回答 2

24

您的替代解决方案可能是:

<script>在@annotation 的开头添加

@Update("<script>
  update Author
    <set>
      <if test="username != null">username=#{username},</if>
      <if test="password != null">password=#{password},</if>
      <if test="email != null">email=#{email},</if>
      <if test="bio != null">bio=#{bio}</if>
    </set>
  where id=#{id}
</script>")

此外,我们在项目中将 .groovy 编译为 .class,因此,我们可以像上面一样在 @annotation 中编写 SQL

于 2013-04-16T08:45:12.623 回答
9
  1. 在您的映射器界面中:

    @SelectProvider(type=MyClass.class, method="myMethod")
    public Object selectById(int id);
    
  2. 在 MyClass 中:

    public static String myMethod() {
        return "select * from MyTable where id=#{id}"; 
    }
    
于 2012-12-07T09:15:05.930 回答