数据库查询:通过两字段其中一个查询信息

根据姓名Name或者编号Code获取Student信息

一、SQL语句

sql 复制代码
select * from student_info
where concat(ifnull(student_code,''),ifnull(student_name,''))like concat('%' ,'具体姓名或学号','%')

二、MyBatis的XML映射代码定义了一个查询方法

XML 复制代码
 <select id="selectStudentByNameOrCode" parameterType="String" resultMap="StudentResult">
        <include refid="selectStudent"/>
        where concat(ifnull(student_code ,''),ifnull(student_name ,'')) like concat('%',#{flag},'%') and status=0
    </select>

这段代码是MyBatis映射文件中的一段SQL映射配置,用于定义一个名为selectStudentByNameOrCode的查询操作。下面是各部分的详细解释:

<select>标签:定义了一个SQL查询语句,其属性说明如下:

id="selectStudentByNameOrCode":这是查询操作的唯一标识符,可以在MyBatis的接口映射或直接在Java代码中通过这个ID来调用这个查询。

parameterType="String":指定了传入此查询方法的参数类型,这里是字符串类型(String),意味着查询时会接收一个字符串参数。

resultMap="StudentResult":指定了查询结果映射到Java对象的方式,通过引用名为StudentResult的结果映射来处理查询结果,将数据库字段映射到Java对象的属性上。

<include refid="selectStudent"/>:这是MyBatis中的动态SQL片段引用,表示将另一个映射文件中定义的SQL片段(ID为selectStudent)插入到此处。这个片段通常包含一些通用的SELECT字段列表或其他重复使用的SQL代码,以提高代码的复用性和可维护性。

where子句:定义了查询的条件。

concat(ifnull(student_code ,''),ifnull(student_name ,'')) like concat('%',#{flag},'%'):构建了一个模糊查询条件,用于匹配student_code和student_name的组合。这里使用了concat函数来连接这两个字段的值(如果它们为NULL,则替换为空字符串),然后使用like操作符配合通配符%来匹配传入的参数#{flag}。这意味着查询会找出student_code和student_name连接起来的字符串中包含flag值的记录。

and status=0:添加了额外的查询条件,限制结果中status字段的值必须为0。

综上所述,这段配置定义了一个查询操作,用于根据传入的flag字符串模糊搜索那些状态为0(假设0表示某种可用状态)且student_code与student_name组合起来包含该flag值的库存记录,并将查询结果映射到StudentResult定义的Java实体类上。

三、mapper

java 复制代码
    /**
     * @return
     * @Author lyy
     * @Description //通过姓名或编号获取信息
     * @Param
     **/
    List<Student> selectStudentByNameOrCode(@Param("flag") String flag);
相关推荐
倔强的石头_9 小时前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou642 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤2 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
爱可生开源社区3 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1774 天前
《从零搭建NestJS项目》
数据库·typescript
加号34 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏4 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐4 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再4 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest4 天前
数据库SQL学习
数据库·sql