返回顶部
首页 > 资讯 > 后端开发 > Python >MyBatis @Select注解介绍:基本用法与动态SQL拼写方式
  • 396
分享到

MyBatis @Select注解介绍:基本用法与动态SQL拼写方式

2024-04-02 19:04:59 396人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1、@Select注解基本用法2、@Select注解动态sql拼写@Select动态参数参考1、@Select注解基本用法 @Select注解的目的是为了取代xml中的

1、@Select注解基本用法

@Select注解的目的是为了取代xml中的select标签,只作用于方法上面。

下面看一下@Select注解的源码介绍:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Select
{
    String[] value();
}

从上述可以看到两点信息:

(1)@Select注解只能修饰方法

(2)@Select注解的值是字符数组

所以,@Select注解的用法是这样的:

@Select({ "select * from xxx", "select * from yyy" })
Person selectPersonById(Integer id);

虽然@Select注解的值是字符数组,但是真正生效的应该是最后那条SQL语句。这一点请大家要留意一下。

2、@Select注解动态SQL拼写

普通的字符串值,只能实现变量的替换功能,如下所示,

@Select("select * from t_person where id = #{id}")
Person selectPersonById(Integer id);

如果要想实现复杂的逻辑判断,则需要使用标签,如下所示:

@Select("<script> select * from t_person where id = #{id} 
<when test='address !=null'> and address = #{address} 
</when> </script>")
Person selectPersonById(Integer id);

其实,标签并非是@Select注解专用的,其他的注解,例如@Insert,@Update等等,都可以使用的。

@Select动态参数参考

今天发现一个问题,使用标签进行查询语句的拼接时,逗号和引号老处理不好,所以在此记录下,供以后参考

    @Select("<script>" +
            " select * from tb_crowd_fund_person_record a,tb_crowd_fund_info b where b.id=a.crowd_fund_info_id " +
            " <if test='activeStatus != null and activeStatus != \"\"'> "+
            "  and b.active_status=#{activeStatus} " +
            " </if> " +
            " <if test='createUser != null and createUser != \"\"'> "+
            "  and a.create_user=#{createUser} " +
            " </if> " +
            "</script>")
    List<String> findByType(Map<String,String> map);

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

--结束END--

本文标题: MyBatis @Select注解介绍:基本用法与动态SQL拼写方式

本文链接: https://lsjlt.com/news/154066.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作