mybatis单框架通用mapper使用(二)
创始人
2024-04-06 05:55:38

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

1 查询

1.1 简单查询

1.1.1 查多条

a 用法
接口引用.select(实体类对象引用);
//里面实体类对象,里面不为null值的部分就会作为条件被查询,多个条件使用and进行拼接起来
//传入为null就是查询全部的值
b 测试代码
  @Testpublic 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 = mapper.select(s);songs.forEach(System.out::println);}
c 测试代码运行结果

在这里插入图片描述

1.1.2 查单条

a 根据属性查
a.1 用法
接口引用.selectOne(实体类对象引用);
a.2 测试代码
@Testpublic 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 测试代码
 @Testpublic 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 测试代码
  @Testpublic 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 = 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 = 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 测试

  @Testpublic 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 测试代码

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

4.3 测试代码运行截图

4.3.1 删除前

在这里插入图片描述

4.3.2 测试代码运行截图

在这里插入图片描述

4.3.3 删除后

在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...