接口引用.select(实体类对象引用);
//里面实体类对象,里面不为null值的部分就会作为条件被查询,多个条件使用and进行拼接起来
//传入为null就是查询全部的值
@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);}

接口引用.selectOne(实体类对象引用);
@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);}

接口引用.selectByPrimaryKey(id值);
//使用这个必须要给主键加上@id注解的
@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);}

条件对象.andEqualTo("实体类属性名",需要查询的值);
@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);}

使用andIn(值的集合)来替代多个or的拼接
然后条件查询对象用完andIn()后直接调用其他方法即可
@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);
}

接口引用.updateByPrimaryKeySelective(实体类);
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);}


接口引用.insertSelective(s);
/*注意:为空的数据库就不能去添加*/
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);}

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



上一篇:PyOpenGL安装