后端代码生成工具SDP系列三(写一个带条件的select语句)

本文档介绍了如何使用SDP工具生成带查询条件的Mybatis select语句,包括配置数据库查询条件,生成Mybatis文件,并展示了生成的Java对象和XML select标签,其中涉及精确和模糊查询的处理方式。
摘要由CSDN通过智能技术生成

后端代码生成工具SDP系列三(写一个带条件的select语句)

准备数据库

接着前一篇文章,我们还是使用sdp_workspace表:

CREATE TABLE sdp_workspace (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(200) NOT NULL,
  root_path varchar(100) DEFAULT NULL,
  db_host varchar(100) DEFAULT NULL,
  db_port int(11) DEFAULT NULL,
  db_database varchar(200) DEFAULT NULL,
  db_username varchar(45) DEFAULT NULL,
  db_password varchar(200) DEFAULT NULL,
  db_classname varchar(200) DEFAULT NULL,
  remark varchar(200) DEFAULT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY unique_workspace (name)
);

我们希望通过name(精确查询)和db_host(模糊查询)可以查询sdp_workspace表,例如:

select t.* from sdp_workspace t
where 88=88
and name = 'sdp'
and db_host like '%localhost%'

注意,这里要保证每个查询条件都是单独一行,并且以and开始,不要有括号。所以在where后面加了一个88=88的条件,这样就保证了后面的条件都能以and开始一行。这样的查询已经可以满足多数的单表查询场景了。
另外一个需要注意的是,如果select语句使用了通配符,而不是具体的字段列表,那么即便是单表查询,也需要给表起个别名,这样SDP工具才能自动将表的字段扩展开。如果是select * from这样的写法,Mybatis的xml中是不会扩展的,但是不影响java文件,java文件是可以处理所有的字段信息的。

配置select语句

打开sql页面,点击添加,添加的内容如下图所示:
在这里插入图片描述

配置好以后,如下图所示:在这里插入图片描述
第一行就是新增的内容,后面两个是SDP工具根据规则自动创建的两个条件(就是必须以and开始一行的规则)。目前只有在新增SQL时才会自动处理参数,再次编辑是不会重新处理的,如果再新增条件,就需要手工添加,或把之前新增的SQL删除,新建一条,这样就可以再次自动处理参数了。

生成带查询条件的Mybatis文件

选中任一一行后,点击执行。执行后会有成功提示,页面如下图所示:
在这里插入图片描述

查看生成的结果

可以看到会多出两个java文件:
在这里插入图片描述
然后在Mybatis的xml文件中会多出若干个select语句,其中一个select如下。可以看到通配符被扩展为具体的字段,查询条件被自动替换为参数:

<select id="getWorkspaceList" parameterType="cn.mysdp.biz.domain.SdpWorkspaceForGetWorkspaceList" resultType="cn.mysdp.biz.domain.SdpWorkspaceForGetWorkspaceList">
<![CDATA[
    select t.id as id
,t.`name` as `name`
,t.root_path as root_path
,t.db_host as db_host
,t.db_port as db_port
,t.db_database as db_database
,t.db_username as db_username
,t.db_password as db_password
,t.remark as remark
 from sdp_workspace t
where 88=88
]]>
<if test="name != null">
and name = #{name}
</if>
<if test="dbHostLike != null">
and db_host like #{dbHostLike}
</if>
<![CDATA[

]]>
  </select>

这个select对应的请求和返回对象如下:

package cn.mysdp.biz.domain;

import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;

/**
 * @ClassName: SdpWorkspaceForGetWorkspaceList
 * @Description: SQLDomainObject
 * @Author: SDP
 * @Date: 2021-11-06
 * @Version: 1.0
 * Table: sdp_workspace
 * Comment:
 * 
 */
@Getter
@Setter
public class SdpWorkspaceForGetWorkspaceList implements Serializable {
    private static final long serialVersionUID = 9000174441695984L;

    private Integer id;

    private String name;

    private String rootPath;

    private String dbHost;

    private Integer dbPort;

    private String dbDatabase;

    private String dbUsername;

    private String dbPassword;

    private String remark;

    private String dbHostLike;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值