目录

1.动态MySQL

1.1set标签

1.2foreach标签

2.mybatis映射文件处理特殊字符

3.mybatis模糊查询

3.1使用字符串函数拼接

4.连表查询


1.动态MySQL

1.1set标签

set标签一般配合if标签使用于修改语句,如果传递的参数为null,那么不会修改该列的值

<update id="update">update t_student<set><if test="name!=null and name!=''">name=#{name},</if><if test="age!=null">age=#{age},</if><if test="sex!=null and sex!=''">sex=#{sex},</if><if test="address!=address">address=#{address},</if></set>where id=#{id}</update>

1.2foreach标签

如果你使用的为数组array  如果你使用的为集合 那么就用list
        collection:类型
        item:数组中每个元素赋值的变量名
        open: 以谁开始
        close:以谁结束
        separator:分割符

根据id查询

<select id="findById" resultType="com.lpt.entity.student">select * from t_student where id in<foreach collection="array" item="id" open="(" close=")" separator=",">#{id}</foreach></select>

删除

<delete id="batchDelete"><foreach collection="array" item="id" open="delete from student where  id in(" close=")" separator=",">#{id}</foreach></delete>

添加

<!--insert into student(name,age) values('lpt',0),('lpt01',0),('lpt02',0)--><insert id="saveBatch">insert into t_student(name,age) values<foreach collection="list" item="stu" separator=",">(#{stu.name},#{stu.isdeleted})</foreach></insert>

2.mybatis映射文件处理特殊字符

<!--<![CDATA[sql]]>-->

<select id="findByMaxMin" resultType="com.lpt.entity.student"><![CDATA[select * from t_student where id >#{min} and id <#{max}]]></select>

3.mybatis模糊查询

select * from 表明 where 列明 like '%%'

3.1使用字符串函数拼接

<select id="findByLike" resultType="com.lpt.entity.student">select * from t_student where name like concat('%',#{name},'%')</select>

3.2使用${}

<select id="findByLike" resultType="com.lpt.entity.student">select * from t_student where name like '%${name}%'</select>

通过使用发现${}实际上是字符串拼接,它不能防止sql注入, 而#{}它是预编译,它可以防止sql注入问题,#{}实际使用的PreparedStatement.

4.连表查询

1.多对一:从数据多的地方来查询一的一方

班级表:

学生表:

学生实体类

package com.lpt.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {private int id;private String name;private int age;private Integer classId;private Clazz clazz;//学生所属的班级
}

把链表查询体现到实体类上

package com.lpt.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Clazz {private Integer cid;private String cname;
}
 <resultMap id="StuMapper" type="com.lpt.entity.Student"><id column="stu_id" property="id"/><result column="stu_name" property="name"/><result column="stu_age" property="age"/><result column="class_id" property="classId"/><association property="clazz" javaType="com.lpt.entity.Clazz"><id column="cid" property="cid"/><result column="cname" property="cname"/></association></resultMap><select id="select" resultMap="StuMapper">select * from t_stu s join clazz c on s.class_id = c.cid where stu_id=#{id}</select>

查询结果如下

动态MySQL及连表查询相关推荐

  1. mysql的联表查询和去重复数据

    mysql的联表查询和去重复数据 /* SQLyog Ultimate v10.00 Beta1 MySQL - 5.7.17-log : Database - pusmtnew ********** ...

  2. day15(mysql 的多表查询,事务)

    mysql之多表查询 1.合并结果集 作用:合并结果集就是把两个select语句查询的结果连接到一起! /*创建表t1*/ CREATE TABLE t1(a INT PRIMARY KEY ,b V ...

  3. Mysql的交叉表查询

    最近由于找工作,所以在恶补PHP和Mysql方面的东西,发现还是学习的不够.这几天看到关于mysql的交叉表查询的内容,根据自己的理解简单的尝试了下. 由于MonsterHunter World较火, ...

  4. MySQL的多表查询

    文章目录 MySQL的多表查询 什么是多表联合查询 交叉连接(CROSS JOIN) 笛卡尔积 交叉连接 内连接 外连接 左连接 右连接 分组查询 GROUP BY单独使用 GROUP BY 与 GR ...

  5. mysql表deptno,MySQL:多表查询

    MySQL:多表查询 SELECT查询不但可以从一张表查询数据,还可以从多张表同时查询数据.查询多张表的语法是:SELECT * FROM 表1 表2,普通多表查询会获取M x N行记录,所以一般使用 ...

  6. mysql怎样两表查询_mysql怎样两表查询?

    mysql两表查询的方法:1.使用"select 字段列表 from 表1,表2 [where 条件]"进行查询:2.使用"SELECT 字段列表 FROM 表1 关键字 ...

  7. mysql数据库多表查询(内连接,外连接,自连接,子查询及案例分析)

    mysql数据库多表查询 之前接触的项目或者自己涉及的部分对于多表查询的使用都比较的少,常常是自己更具案例进行学习,最近见到的比较的多,所以今天就好好的总结一下,为下一步学习做准备! 1.多表查询关系 ...

  8. MySQL数据库多表查询

    MySQL数据库多表查询 前言 在之前的文章MySQL数据库之SQL入门中,我们讲到了四类SQL中的DQL(数据库查询语言,用于查询表中数据),但是我仅仅用DQL去查询一张表中数据,而在实际的应用中, ...

  9. MySQL:单表查询---简单查询+条件查询+高级查询+表和字段取别名

    目录 一.通用模版展示 简单查询 条件查询 高级查询 表和字段取别名 二.举例说明 简单查询 条件查询 高级查询 表和字段取别名 三.注意事项 四.Mapper简单举例 简单查询 条件查询 高级查询 ...

最新文章

  1. Alternative PHP Cache ( APC )
  2. python类基础知识注意点
  3. 一、WPF 2个datagrid之间同步进度条
  4. 【Tensorflow】打印输出tensor张量和变量的方法
  5. 音乐雷达 shazam算法_具有10亿首Shazam音乐识别功能的数据可视化
  6. 138_Power BIPower Pivot特殊半累加度量
  7. Android开发杂谈更新中
  8. 关系查询处理 查询优化 论文_2019年4月湖北自考成绩查询入口已开通
  9. lua qt 编译_Win32下 Qt与Lua交互使用(一):配置Qt下Lua运行环境
  10. RFID打印机有什么用
  11. Android Studio导入model
  12. 区块链 女巫攻击是什么 Sybil Attack 为什么POW可以抵御女巫攻击 一文看懂
  13. [剑指Offer] 第5章课后题详解
  14. 报头中的偏移量作用_网络中BN层的作用
  15. java 自动化运维工具_自动化运维工具 - 巴伐利亚的风的个人空间 - OSCHINA - 中文开源技术交流社区...
  16. vc linux 中文版下载64位,VSCode 64位下载
  17. 三自由度机器人动力学(三个转动自由度+word报告+matlab代码)
  18. JAVA对接公众号(三、创建自定义菜单)
  19. 利用出生年月日求年龄
  20. 幻数浅析(Magic Number)

热门文章

  1. Andorid 11 数据和文件存储相关API
  2. 每日学术速递1.27
  3. Opencv imshow 函数详解
  4. 2022年,绩效管理周期的综合指南
  5. DOCKER(4,DockerFile):Docker高级应用课程学习过程和一些资源汇总
  6. 视频教程-血腥大地-第一季-其他
  7. (终稿)C++实现科学计算器主函数代码(含调用函数)
  8. 计算机专业的工匠精神人物,高职计算机专业工匠精神培育研究.doc
  9. AC日记——逃出克隆岛 (bfs)
  10. C#关于JArray和JObject封装JSON对象