sptingboot6-使用mybatis-plus

首先看下代码和数据库结构

在这里插入图片描述
关于如何配置数据库就不说了,不会的看下之前的文章,接下来就是导入我们本次测试的依赖

  <!--测试-->
        <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);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值