mybatis单框架通用mapper使用(二)

2023/11/30 9:11:50

mybatis单框架通用mapper使用(二)

1 查询

1.1 简单查询

1.1.1 查多条

a 用法
接口引用.select(实体类对象引用);
//里面实体类对象,里面不为null值的部分就会作为条件被查询,多个条件使用and进行拼接起来
//传入为null就是查询全部的值
b 测试代码
  @Test
    public void t2(){
        SqlSessionFactory sf = SqlSessionFactoryUtil.sf();
        SqlSession sqlSession = sf.openSession();
        SongsMapper mapper = sqlSession.getMapper(SongsMapper.class);
        Songs s=new Songs();
        s.setName("晴天");
        s.setSinger_name("周杰伦");
        //不为null才会查 动态sql,实体类的属性作为条件,多个条件用and分隔
        List<Songs> songs = mapper.select(s);
        songs.forEach(System.out::println);
    }
c 测试代码运行结果

在这里插入图片描述

1.1.2 查单条

a 根据属性查
a.1 用法
接口引用.selectOne(实体类对象引用);
a.2 测试代码
@Test
    public void t2(){
        SqlSessionFactory sf = SqlSessionFactoryUtil.sf();
        SqlSession sqlSession = sf.openSession();
        SongsMapper mapper = sqlSession.getMapper(SongsMapper.class);
        Songs s=new Songs();
        s.setName("稻香");
        s.setSinger_name("周杰伦");
        Songs song01 = mapper.selectOne(s);
        System.out.println(song01);
    }
a.3 测试代码运行截图

在这里插入图片描述

b 根据Id查询
b.1 用法
接口引用.selectByPrimaryKey(id值);
//使用这个必须要给主键加上@id注解的
b.2 测试代码
 @Test
    public void t2(){
        SqlSessionFactory sf = SqlSessionFactoryUtil.sf();
        SqlSession sqlSession = sf.openSession();
        SongsMapper mapper = sqlSession.getMapper(SongsMapper.class)
        //根据id查找 因为加了注解@id(需要在实体类的id里面加@Id)
        Songs songs = mapper.selectByPrimaryKey(777);
        System.out.println(songs);
   } 
b.3 测试代码运行截图

在这里插入图片描述

1.2 复杂查询

1.2.1 等值比较

a 用法
条件对象.andEqualTo("实体类属性名",需要查询的值);
b 测试代码
  @Test
    public void t1(){
        //方法不要和它自带的方法一样
        SqlSessionFactory sf = SqlSessionFactoryUtil.sf();
        SqlSession sqlSession = sf.openSession();
        SongsMapper mapper = sqlSession.getMapper(SongsMapper.class);
        //创建条件构造器,基于哪个实体类来设计条件
        Example ex=new Example(Songs.class);
       //创建条件对象1 一个Criteria就是一个括号
      Example.Criteria c= ex.createCriteria();
      c.andEqualTo("singer_name","林俊杰");
      List<Songs> songs = mapper.selectByExample(ex);
      songs.forEach(System.out::println);
    }
c 测试运行截图

在这里插入图片描述

1.2.2 条件里面既有或也有并且

a 思路
使用andIn(值的集合)来替代多个or的拼接
然后条件查询对象用完andIn()后直接调用其他方法即可
b 测试代码
@Test
public void t2(){
    //方法不要和它自带的方法一样
    //查询歌手周杰伦和张学友并且发行时间在2000-1-1之后的歌曲
    SqlSessionFactory sf = SqlSessionFactoryUtil.sf();
    SqlSession sqlSession = sf.openSession();
    SongsMapper sm = sqlSession.getMapper(SongsMapper.class);
    //创建条件构造器,基于哪个实体类来设计条件
    Example ex=new Example(Songs.class);
    //创建条件对象1 一个Criteria就是一个括号
    Example.Criteria c1= ex.createCriteria();
    ArrayList arr=new ArrayList();
    arr.add("张学友");
    arr.add("周杰伦");
    c1.andIn("singer_name",arr);
    c1.andGreaterThanOrEqualTo("releaseDate", "2000-01-01");
    List<Songs> songs = sm.selectByExample(ex);
    songs.forEach(System.out::println);
}
c 测试代码运行截图

在这里插入图片描述

2 修改

2.1 用法

接口引用.updateByPrimaryKeySelective(实体类);

2.2 测试代码

public void t2() {
        //方法不要和它自带的方法一样
        SqlSessionFactory sf = SqlSessionFactoryUtil.sf();
        SqlSession sqlSession = sf.openSession();
        SongsMapper sm = sqlSession.getMapper(SongsMapper.class);
        //带selective是动态sql(不为null)
        Songs s=new Songs();
        s.setId(1002);
        s.setName("葫芦娃");
        int i = sm.updateByPrimaryKeySelective(s);
        sqlSession.commit();
//        System.out.println("添加后: "+s);
    }

2.3 测试代码运行截图

2.3.1 修改前

在这里插入图片描述

2.3.2 测试代码运行的截图

在这里插入图片描述

2.3.3 修改后

在这里插入图片描述

3 添加

3.1 用法

接口引用.insertSelective(s);
/*注意:为空的数据库就不能去添加*/

3.2 测试代码

3.2.1 在实体类中 需要设置主键回填

package entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Songs{
    //IDENTITY是自增长
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)//主键回填
    private Integer id;
    private String singer_name;
    private String album;
    private String albumImg;
    private String name;
    private String releaseDate;
}

3.2.2 测试

  @Test
    public void t2() {
        //方法不要和它自带的方法一样
        SqlSessionFactory sf = SqlSessionFactoryUtil.sf();
        SqlSession sqlSession = sf.openSession();
        SongsMapper sm = sqlSession.getMapper(SongsMapper.class);
        //带selective是动态sql
        /*添加*/
        Songs s=new Songs(null,"凤凰传奇","策马崩腾",null,"天籁","2022-1-1");
        //为空的就不加
        sm.insertSelective(s);
        sqlSession.commit();
        System.out.println("添加后: "+s);
    }

3.3 测试代码运行截图

在这里插入图片描述

4 删除

4.1 用法

接口引用.deleteByPrimaryKey(键名);

4.2 测试代码

@Test
    public void t2() {
        //方法不要和它自带的方法一样
        SqlSessionFactory sf = SqlSessionFactoryUtil.sf();
        SqlSession sqlSession = sf.openSession();
        SongsMapper sm = sqlSession.getMapper(SongsMapper.class);
        //带selective是动态sql
        sm.deleteByPrimaryKey(1003);
        sqlSession.commit();
    }

4.3 测试代码运行截图

4.3.1 删除前

在这里插入图片描述

4.3.2 测试代码运行截图

在这里插入图片描述

4.3.3 删除后

在这里插入图片描述


http://www.jnnr.cn/a/120089.html

相关文章

【笔试题】【day20】

目录 第一题&#xff08;循环队列的数据元素个数的计算&#xff09; 第二题&#xff08;二叉树的度&#xff09; 第三题&#xff08;平衡因子为0的分支节点&#xff0c;平衡树的构建&#xff09; 第四题&#xff08;堆的构建&#xff09; 第五题&#xff08;散列冲突&#…

解读数据可用性赛道:如何讲好模块化区块链的叙事?

数据可用性&#xff08;Data Availability&#xff09;主要存在于轻客户端节点相对全节点的语境下。对于轻客户端节点的数据可用性问题&#xff0c;行业内已经达成共识——采用纠删码&#xff08;erasure codes&#xff09;来解决。 不仅轻客户端节点有数据可用性问题&#xf…

机器人控制算法九之 位姿描述与空间变换

机器人控制算法九之 位姿描述与空间变换 相关内容&#xff1a; 位姿空间变换欧拉角与RPY角… 一个简单的机器人场景中的坐标系展示&#xff1a; 1.刚体位姿描述 研究机器人操作臂的运动&#xff1a;涉及各连杆位姿关系、连杆与周围环境&#xff08;操作对象和障碍物&#xf…

搜索技术【广度优先搜索】 - 队列式广度优先搜索

搜索技术【广度优先搜索】 - 队列式广度优先搜索 有n 个物品和1个背包&#xff0c;每个物品i 对应的价值都为vi 、重量都为wi &#xff0c;背包的容量为W &#xff08;也可以将重量设定为体积&#xff09;。每个物品只有一件&#xff0c;要么装入&#xff0c;要么不装入&#…

荧光猝灭剂BHQ-1 acid/NHS/azide/amine/BHQ染料染料

BHQ-1 acid &#xff0c;BHQ-1 NHS&#xff0c;BHQ-1 azide&#xff0c;BHQ-1 amine 在结构式上主要区别在于其末端连接的基团的区别&#xff0c;以羧基&#xff0c;酯基&#xff0c;叠氮&#xff0c;氨基等为主&#xff0c;以其的区别为主说明以下相关内容。 一.BHQ-1 acid …

self-attention 李宏毅

Self Attention 李宏毅 一般用于输入一个序列&#xff0c;经过模型输出一个序列的 如上如图所示&#xff0c;在翻译句子词性的时候&#xff0c;要考虑句子上下文的关系&#xff1f;如何将上下文考虑进去&#xff1f; 采用self attention机制&#xff0c;将输入的向量&#x…

2013年第四届C/C++ A组蓝桥杯省赛真题+解析+代码

目录 第一题&#xff1a;高斯日记 题目描述 思路分析 AC代码 第二题&#xff1a;排它平方数 题目描述 思路分析 AC代码 第三题&#xff1a;振兴中华 题目描述 思路分析 AC代码 第四题&#xff1a;颠倒的价牌 题目描述 思路分析 AC代码 第五题&#xff1a;前缀…

C++ Reference: Standard C++ Library reference: C Library: cwctype: iswblank

C官网参考链接&#xff1a;https://cplusplus.com/reference/cwctype/iswblank/ 函数 <cwctype> iswblank int iswblank (wint_t c); 检查宽字符是否为空白 检查c是否为空字符。 空白字符是用于分隔一行文本中的单词的空格&#xff08;space character&#xff09;字符…

基于微信小程序的食堂窗口自助点餐系统设计与实现-计算机毕业设计源码+LW文档

小程序开发说明 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Mave…

目标检测算法——YOLOv5/YOLOv7改进之结合无参注意力SimAM

目录 &#xff08;一&#xff09;前言介绍 1.摘要 2.不同注意力步骤比较 &#xff08;二&#xff09;相关实验 &#xff08;三&#xff09;YOLOv5结合无参注意力SimAM 1.配置.yaml文件 2.配置common.py 3.修改yolo.py SimAM&#xff1a;无参数Attention助力分类/检测/分…

和数项目成功入选“2022城市数字化转型优秀案例”

2022年11月8日&#xff0c;由上海市人民政府批准&#xff0c;上海市国际贸易促进委员会和工信部直属的中国信息通信研究院共同主办的 “2022全球智慧城市合作与发展大会”在上海国际会议中心盛大开幕。上海和数软件“融合区块链技术的综合能源服务应用系统”入选“2022城市数字…

React - 监听器执行Hook不生效的闭包性问题

React - 监听器执行Hook不生效的闭包性问题前言一. 案例及分析1.1 useEffect的闭包性1.2 瀑布流伪代码优化前言 前几天自己写了一个简单的瀑布流&#xff1a;React - 实现瀑布流加载。当时的代码编写里面&#xff0c;其实是待优化的地方。只不过当时由于问题还没解决&#xff…

生命科学领域下的“全球突破性十大技术”干货与分享

细胞分析 | 分子图谱 | IND 生物识别 | 基因测序 | AlphaFold 在细胞分析、视觉识别、生物识别、基因测序、IND、AlphaFold快速发展的大背景下&#xff0c;各项造福于人类的新兴技术开始展现。近日&#xff0c;《麻省理工科技评论》“十大突破性技术”20周年主题峰会在杭州余…

林业草原防火智能可视化平台

林业草原防火智能可视化平台主要应用于林业草原行业。平台应用领先的视频监控、热成像感知、野外定位、视频智能分析能力&#xff0c;实现对全地形森林火点的全天候监测及实时预警&#xff0c;并支持火情处置、救援力量查找、预案管理、态势标绘、灾损评估等功能。落实对火情发…

事务 还有这些用法,之前都不知道

序 transationTemplate.execute 的写法 第一次 碰到&#xff0c;我之前是 controller -> biz -> service -> mapper 然后用 Transation 注解搞定事务&#xff0c;至于 同一个类的 方法之间调用&#xff0c;在biz 层就规避了 不懂就问 首先 同一个类中 方法调用因为…

Linux简单shell脚本部署项目

1、挂载配置文件运行 # JDK指定17版本运行 function start(){echo "the enviroment is ${m4c_env}"echo "starting springboot app:my_web.jar"echo "nohup /opt/data/hcym4c/jdk/jdk-17.0.5/bin/java -jar ${JAVA_OPTS} my_web.jar -Dproc_name${m4…

打破次元壁,让游戏角色在指尖跳舞,简易的 AR 教程

本文介绍如何通过 Windows 自带的 Xbox Game Bar 录制游戏视频&#xff0c;并通过 Python 使用 u2net 的 AI 模型对视频进行背景去除&#xff0c;生成含有透明通道的视频。最后结合 Html5 的相机并播放 webm 视频&#xff0c;实现简单的 AR 能力。 文章目录前言实现思路录制素材…

Landtasy Summer 系列第二弹!

跟随独角兽的步伐&#x1f984; Alcy 工作室为大家带来其第一个体素 NFT 系列&#xff1a;Landtasy&#xff01; Landtasy 是独角兽&#x1f984;的奇妙宇宙中的一个公园。关键字是享受当下&#xff01;禅意和乐趣&#xff0c;人人可用。 这个 NFT 系列只包含可爱和多彩的设备。…

Faster RCNN基本结构和各部分原理详解

一、网络总体结构 总体结构如图&#xff1a; 可分为以下四个模块↓ 名称 作用 卷积层(conv) 提取feature maps 区域候选网络(PRN) 分类&#xff1a;对预设的anchor进行二分类Bounding box regression-修正较为准确的proposals 兴趣域池化(RoI Pooling) 收集PRN生成的prop…

作业-11.10

1、要求输入目录的路径后&#xff0c;能够打印出指定路径下所有文件的详细信息&#xff0c;类似ls -l #include <stdio.h> #include <stdio.h> #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> #include <stdlib.h> #i…
最新文章