zoukankan      html  css  js  c++  java
  • Mybatis @Select注解中如何拼写动态sql

    @Mapper
    public interface DemandCommentMapper extends BaseMapper<DemandComment>{
        @Select("SELECT "
                + "a.id as 'id',a.create_date as 'createDate',a.content as 'content',"
                + "a.parent_id as 'parentId',a.first_comment_id as 'firstCommentId',"
                + "b.id as 'fromUser.id',b.realname as 'fromUser.realname',b.avatar as 'fromUser.avatar',"
                + "c.id as 'toUser.id',c.realname as 'toUser.realname',c.avatar as 'toUser.avatar' "
                + "FROM t_demand_comment a "
                + "LEFT JOIN t_user b ON b.id = a.from_uid "
                + "LEFT JOIN t_user c ON c.id = a.to_uid "
                + "WHERE a.demand_id = #{demandId} "
                + "ORDER BY a.create_date ASC"
                + "LIMIT #{startNo},#{pageSize}")
        public List<DemandComment> listDemandComment(@Param("demandId") Long demandId, 
                                 @Param("startNo") Integer pageNo, 
                                 @Param("pageSize") Integer pageSize);
    

    这样整个语句是写死的,如果我想根据pageNo与pageSize是否为空来判断是否需要分页,该怎么做呢?
    如果使用xml来配置的话可以用:

    <when test='startNo!=null and pageSize != null '>
      LIMIT #{startNo},#{pageSize}
    </when>
    

    如果是用@Select 这种该如何做呢?

    方法:用script标签包围,然后像xml语法一样书写

    @Mapper
    public interface DemandCommentMapper extends BaseMapper<DemandComment>{
        @Select("<script>"
                + "SELECT "
                + "a.id as 'id',a.create_date as 'createDate',a.content as 'content',"
                + "a.parent_id as 'parentId',a.first_comment_id as 'firstCommentId',"
                + "b.id as 'fromUser.id',b.realname as 'fromUser.realname',b.avatar as 'fromUser.avatar',"
                + "c.id as 'toUser.id',c.realname as 'toUser.realname',c.avatar as 'toUser.avatar' "
                + "FROM t_demand_comment a "
                + "LEFT JOIN t_user b ON b.id = a.from_uid "
                + "LEFT JOIN t_user c ON c.id = a.to_uid "
                + "WHERE a.demand_id = #{demandId} "
                + "ORDER BY a.create_date ASC "
                + "<if test='startNo!=null and pageSize != null '>"
                + "LIMIT #{startNo},#{pageSize}"
                + "</if>"
                + "</script>")
        public List<DemandComment> listDemandComment(@Param("demandId") Long demandId, 
                                 @Param("startNo") Integer pageNo, 
                                 @Param("pageSize") Integer pageSize);
    

    项目实例

    @Select("<script>"
                +"select * from mi_taobao where 1=1"
                +"<if test='status != null'>"
                +"and status = #{status}"
                +"</if>"
                +"</script>")
        public List<Taobao> getTaobao(@Param("status") Integer status);
    

    转载自:https://blog.csdn.net/qq_32786873/article/details/78297551

  • 相关阅读:
    Qt4.7.4下单独编译QtWebkit
    CronHowto Community Ubuntu Documentation
    菜鸟学Python(9):给文件添加内容,得到文件信息
    yet another software souring company based on san franciso
    Get Started With Chickenfoot
    Berkeley DB(四) DB Environment
    搭建SSH框架链接Oracle数据库
    Linux下手动编译安装Apache2.x
    Errore HTTP 404.2 Not Found" IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理
    关于二分法中取中间值时向下和向上取整的问题(由大白LA3971想到的)
  • 原文地址:https://www.cnblogs.com/DiZhang/p/12544806.html
Copyright © 2011-2022 走看看