首先看下代码和数据库结构
关于如何配置数据库就不说了,不会的看下之前的文章,接下来就是导入我们本次测试的依赖
<!--测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mybatis-plus依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.2</version>
</dependency>
<!--mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--RunWith的注解,意思是规定他在什么时候执行-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
连接上你的数据库之后,就先创建数据库对应的实体类我创建一个testsss表对应的实体类就行了
@Data
@TableName("testsss") //模型对应的表名字,起到关联的作用
public class Testsss {
@TableId(value = "id",type = IdType.AUTO) //这一步一定要配置,不然插入会报住建铸错
private Integer id;
private String name;
private String pwd;
private String number;
}
创建对应的mapper并且继承BaseMapper<你的实体类名字>,在继承的时候基本的crud都已经替你写完了
@Component
public interface TestsssMapper extends BaseMapper<Testsss> {
//自定义的sql(主要针对于复杂的语句书写,可以自定义,调佣方法即可)
@Select("select *from testsss where id=3")
Testsss selectBuIdTest();
}
接下来进入我们的test测试类(先跳过分页的插件),
@SpringBootTest
@RunWith(SpringRunner.class)
public class springTest {
@Autowired
private TestsssMapper testsssMapper;
@Autowired
private PremsMapper premsMapper;
//测试plus的查询
@Test
public void testSelect(){
//自定义的sql语句-------------------------
/* Testsss testsss=testsssMapper.selectBuIdTest();
System.err.println("这是自定义的:"+testsss.toString());
*/
//全部查询|模糊查询|排序|条件大于小于(根据selectList(参数不同结果不同);)-------------------------------------------------
/*
* .like("字段","值") 模糊查询
* .orderByDesc("字段") .orderByAsc("字段") 升降序列
* .eq("字段","值").or().eq("字段","值") 字段的属性等于XXX 或者 字段属性等于YYY的条件
* .lt("字段","值") gt("字段","值") 小于和大于
* */
/* QueryWrapper<Testsss> testsssQueryWrapper=new QueryWrapper<Testsss>();
*//*--------------查询所有信息-----------------*//*
testsssQueryWrapper=null;//查找一个表的所有信息
*//*--------------模糊插叙-----------------*//*
testsssQueryWrapper.like("name","mashuai");//参数等于 %mashuai%
testsssQueryWrapper.likeRight("name","mashuai").eq("pwd","123");//查找 mashuai% 并且pwd=123的信息
testsssQueryWrapper.likeLeft("name","mashuai");//参数等于 %mashuai
*//*--------------排序----------------*//*
testsssQueryWrapper.orderByDesc("id");//降序查找所有的信息,根据id排序
testsssQueryWrapper.eq("name","mashuai").orderByAsc("id");//查找字段name为mashuai的,并且根据id升序
*//*--------------大小与判断-----------------*//*
testsssQueryWrapper.lt("id",2);//lt("id",2)查询id<2的信息 。le("id",2);指的是小于等于。ne("id",2);查询不等于2
testsssQueryWrapper.gt("id",2);//ge>2 .ge>=2 .ne!=2
List<Testsss> testsssList=testsssMapper.selectList(testsssQueryWrapper);
System.err.println("模糊查询:"+testsssList.toString());
*/
//分页插件
Page<Testsss> testsssPage=new Page<>(4,4);//两个参数,当前页数,每页条数
//分业结果放进一个IPage对象
IPage<Testsss> iPage=testsssMapper.selectPage(testsssPage,null);//每页条件的分页
//比如现在我需要查找所有name=mashuai的分页结果
/*QueryWrapper<Testsss> testsssQueryWrapper2=new QueryWrapper<Testsss>();//创建条件构造器
testsssQueryWrapper2.eq("name","mashuai");
IPage<Testsss> iPage2=testsssMapper.selectPage(testsssPage,testsssQueryWrapper2);//每页条件的分页
*/
System.err.println("总页数:"+iPage.getPages()+"--总数:"+iPage.getTotal()+"-当前的页数显示数据:"+iPage.getRecords());
//查询一行字段的两个属性(根据id,和name查询)-------------------------------
/* Map<String ,Object> map=new HashMap<>();
map.put("name","mashuai");
map.put("id",1);
List<Testsss> testsssIdName=testsssMapper.selectByMap(map);
System.err.println(testsssIdName);*/
//lamban表达式------------
/* testsssList.forEach(x->{
System.err.println(x);
});
System.err.println(testsssList.toString());*/
}
}
说说分页的插件,首先创建一个配置类
@Configuration
public class MpConfig {
@Bean //分页插件
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}
接着在你需要的地方写上如下代码
//分页插件
Page<Testsss> testsssPage=new Page<>(4,4);//两个参数,当前页数,每页条数
//分业结果放进一个IPage对象
IPage<Testsss> iPage=testsssMapper.selectPage(testsssPage,null);//每页条件的分页
//比如现在我需要查找所有name=mashuai的分页结果
QueryWrapper<Testsss> testsssQueryWrapper2=new QueryWrapper<Testsss>();//创建条件构造器
testsssQueryWrapper2.eq("name","mashuai");
IPage<Testsss> iPage2=testsssMapper.selectPage(testsssPage,testsssQueryWrapper2);//每页条件的分页
System.err.println("总页数:"+iPage.getPages()+"--总数:"+iPage.getTotal()+"-当前的页数显示数据:"+iPage.getRecords());
看下逻辑删除
逻辑删除的本质是更新一个标识的字段,让该条信息实效,就好比你在论坛骂人即使你把评论删除,但是管理员通过后台依然可以看见你的评论
添加一个deleted字段,int类型,默认0,并且写在实体类
@TableLogic //逻辑删除。物理删除指的是直接从数据库种删除,
private Integer deleted;//逻辑删除0没删除,1删除
注册组件
@Bean//l逻辑删除组件
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}
写上测试类
@Test //逻辑删除,实际上走的是更新操作,但是在查询的时候查找不到已经逻辑删除的信息
public void testssLuoji(){
testsssMapper.deleteById(12);
}