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

根据姓名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);
相关推荐
VX:Fegn08956 小时前
计算机毕业设计|基于springboot + vue房屋租赁管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
全栈工程师修炼指南6 小时前
Categraf | 国产化采集器实现:SQL Server 数据库指标采集、可视化、异常告警全流程
数据库
稚辉君.MCA_P8_Java7 小时前
在PostgreSQL中,将整数(int)转换为字符串
数据库·sql·postgresql
武子康7 小时前
Java-182 OSS 权限控制实战:ACL / RAM / Bucket Policy 与错误排查
java·数据库·阿里云·云计算·oss·fastdfs·fdfs
李慕婉学姐7 小时前
基于微信小程序的康复医疗问诊服务平台5855qb95(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·微信小程序
linux修理工7 小时前
vagrant ansible 配置
linux·运维·服务器·数据库·centos
一只落魄的蜂鸟7 小时前
《图解技术体系》Three architectures and application scenarios of Redis
数据库·redis·缓存
hanyi_qwe7 小时前
MySQL数据库管理
数据库·mysql
i***77807 小时前
PostgreSQL_安装部署
数据库·postgresql
想不明白的过度思考者7 小时前
MySQL数据库(库)操作精讲:从入门到精通
数据库·mysql·oracle