Springboot简单整合MybatisPlus及其组件,以及测试多种数据库操作-CURD

Springboot简单整合MybatisPlus及其组件,以及测试多种数据库操作-CURD(MySQL)

1. 配置依赖

<dependencies>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.1</version>
    </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
</dependencies>

2. 配置拦截器插件

/**
 * Mybatis配置拦截器
 */
@Configuration
@MapperScan("xxx.dao")
public class MybatisPlusConfig {
    /**
     * 配置分页插件
     */
//    @Bean
//    public PaginationInterceptor paginationInterceptor(){
//        return new PaginationInterceptor();
//    }

    /**
     * 直接添加-MybatisPlusInterceptor配置拦截器插件
     * 注意版本问题,低版本没有-3.4.2
     * @return
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        //定义MP拦截器
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //添加具体的拦截器
        //分页插件-MySQL
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        //防止全表更新插件
        interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
        return interceptor;
    }
}

3.实体类


@ApiModel("省份实体类")
/**
 * @ApiModel标记实体类
 * @ApiModelProperty 属性的说明或者数据操作更改
 */

/**
 * @Data setter方法与getter方法
 * @AllArgsConstructor 全参构造函数
 * @NoArgsConstructor 无参构造函数
 */
@TableName(value = "t_province_info")
public class ProvinceInfo implements Serializable {
    @ApiModelProperty("主键")
    private Long id;
    @ApiModelProperty("省份")
    private String province;
    @ApiModelProperty("地址")
    private String address;
    @ApiModelProperty("国家")
    private String country;
    @ApiModelProperty("城市")
    private String city;
    @ApiModelProperty("经度")
    private String longitude;
    @ApiModelProperty("纬度")
    private String latitude;

    public ProvinceInfo() {
    }

    public ProvinceInfo(Long id, String province, String address, String country, String city, String longitude, String latitude) {
        this.id = id;
        this.province = province;
        this.address = address;
        this.country = country;
        this.city = city;
        this.longitude = longitude;
        this.latitude = latitude;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getLongitude() {
        return longitude;
    }

    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }

    public String getLatitude() {
        return latitude;
    }

    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }

    @Override
    public String toString() {
        return "ProvinceInfo{" +
                "id=" + id +
                ", province='" + province + '\'' +
                ", address='" + address + '\'' +
                ", country='" + country + '\'' +
                ", city='" + city + '\'' +
                ", longitude='" + longitude + '\'' +
                ", latitude='" + latitude + '\'' +
                '}';
    }
}

4.测试类

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import xxx.ProvinceInfo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.HashMap;
import java.util.List;

/**
 * MybatisPlus学习
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class MybatisPlusTest {
    @Autowired
    private ProvinceInfoDAO provinceInfoDAO;
    /**
     * MyBatisPlus 操作数据库库语法
     *
     */
    /**
     * 查询--
     *
     */
    @Test
    public void select(){
        String province="广东省";
        String city="广州市";
        /**
         * 查询所有数据
         */
        //wrapper为条件构造七,空代表查询所有数据
        List<ProvinceInfo> provinceInfos = provinceInfoDAO.selectList(null);
        Integer provinceNumber = provinceInfoDAO.selectCount(null);
        System.out.println("数据总数"+provinceNumber);
        /**
         * 查询单个省份
         */
        ProvinceInfo provinceInfo = provinceInfoDAO.selectById(17);
        System.out.println(provinceInfo);
        /**
         * 条件查询 And(自定义查询)
         */
        HashMap<String,Object> hashMap=new HashMap<>();
        hashMap.put("province",province);
        hashMap.put("city",city);
        List<ProvinceInfo> provinceInfoList = provinceInfoDAO.selectByMap(hashMap);
        System.out.println(provinceInfoList);

    }
        /**
     * 批量查询or或查询某字段
     */
    @Test
    public void batch(){
        System.out.println(provinceInfoDAO.selectBatchIds(Arrays.asList(3, 4, 6)));
        QueryWrapper<ProvinceInfo> provinceInfoQueryWrapper=new QueryWrapper<>();
        provinceInfoQueryWrapper.select("country","city");
        List<ProvinceInfo> provinceInfos = provinceInfoDAO.selectList(provinceInfoQueryWrapper);
        System.out.println(provinceInfos);
    }
    /**
     * 分页查询
     */
    @Test
    public void pageQuery(){
        //当前页
        int curPage=2;
        //该页条数大小
        int pageSize=5;
        Page<ProvinceInfo> page = new Page<>(curPage, pageSize);
        //wrapper为条件查询
        provinceInfoDAO.selectPage(page,null);
        List<ProvinceInfo> records = page.getRecords();
        System.out.println(records);
        records.forEach(System.out::println);
        System.out.println("总页数-->"+page.getTotal());
        System.out.println("当前页-->"+page.getCurrent());
        System.out.println("当前页查询条数-->"+page.getSize());
        System.out.println("总页数-->"+page.getPages());
    }
    /**
     * 添加数据
     */
    @Test
    public void insert(){
        ProvinceInfo provinceInfo=new ProvinceInfo();
        provinceInfo.setAddress("西藏自治区阿里地区改则县");
//        provinceInfo.setId((long) 3000);//Id如果不自定义的话就会按策略默认生成
        provinceInfo.setCity("阿里地区");
        provinceInfo.setProvince("西藏自治区");
        provinceInfo.setCountry("中国");
        provinceInfo.setLatitude("35.0858083");
        provinceInfo.setLongitude("82.9338680");
        provinceInfoDAO.insert(provinceInfo);
        System.out.println("插入数据成功:"+provinceInfo);
    }

    /**
     * 删除数据
     */
    @Test
    public void delete(){
//        provinceInfoDAO.delete(null);//删除所有
        /**
         * 根据Id删除
         */
        Long id= Long.valueOf("1525391952407310337");
        provinceInfoDAO.deleteById(id);
        /**
         * 根据--且--条件删除
         */
        HashMap<String,Object> hashMap=new HashMap<>();
        hashMap.put("city","阿里地区");
        hashMap.put("id",3000);
        provinceInfoDAO.deleteByMap(hashMap);

        /*

       //逻辑删除组件
    @Bean
    public ISqlInjector sqlInjector(){
        return new LogicSqlInjector();
    }
        #配置逻辑删除  没删除的为0 删除的为1
    mybatis-plus.global-config.db-config.logic-delete-value=1
    mybatis-plus.global-config.db-config.logic-not-delete-value=0

    //走的是更新操作---添加deleted字段更新判断
   */
    }
    /**
     * 更新数据
     */

    @Test
    public void update(){
        ProvinceInfo provinceInfo=new ProvinceInfo();
        provinceInfo.setId(Long.valueOf("1525434676810067969"));
        provinceInfo.setAddress("12345");
        provinceInfoDAO.updateById(provinceInfo);
    }
    /**
     * wrapper条件执行-Or
     */
    @Test
    public void testWrapperOr(){
        QueryWrapper<ProvinceInfo> wrapper=new QueryWrapper<>();
//        "SELECT id,province,address,country,city,longitude,latitude FROM t_province_info WHERE (city = ? OR city = ?)"
        wrapper.eq("city","广州市").or().eq("city","清远市");
        List<ProvinceInfo> provinceInfos = provinceInfoDAO.selectList(wrapper);
        System.out.println(provinceInfos);

    }
    /**
     * wrapper条件执行-And-对应的就是map
     */
    @Test
    public void testWrapperAnd(){
        /**
         * 条件查询 And(自定义查询)-map
         * SELECT id,province,address,country,city,longitude,latitude FROM t_province_info WHERE province = ? AND latitude = ?
         */
        String province="广东省";
        String latitude="23.3946209";
        HashMap<String,Object> hashMap=new HashMap<>();
        hashMap.put("province","广东省");
        hashMap.put("latitude","23.3946209");
        List<ProvinceInfo> provinceInfoList = provinceInfoDAO.selectByMap(hashMap);
        System.out.println(provinceInfoList);
        /**
         * and查询
         */
        QueryWrapper<ProvinceInfo> wrapper=new QueryWrapper<>();
//        "SELECT id,province,address,country,city,longitude,latitude FROM t_province_info WHERE (city = ? OR city = ?)"
        wrapper.eq("city","清远市")
                .eq("latitude","23.3946209089");
        //"SELECT id,province,address,country,city,longitude,latitude FROM t_province_info WHERE (city = ? AND latitude = ?)"
        List<ProvinceInfo> provinceInfos1 = provinceInfoDAO.selectList(wrapper);
        System.out.println(provinceInfos1);
//        /**
//         * 条件修改-and
//         */
//        UpdateWrapper<ProvinceInfo> wrapper=new UpdateWrapper<>();
//        wrapper.set("province","广东省").set("latitude","23.394620901")
//                .eq("province","广东省01").eq("latitude","23.3946209");//有set
        ProvinceInfo provinceInfo=new ProvinceInfo();
        provinceInfo.setProvince("广东省");
        provinceInfo.setLatitude(latitude);
//        //UPDATE t_province_info SET province=?, latitude=? WHERE (province = ? OR latitude = ?)
//        provinceInfoDAO.update(null,wrapper);
//
        /**
         * 条件修改-or
         */
        QueryWrapper<ProvinceInfo> wrapper1=new QueryWrapper<>();
        wrapper1.eq("province","广东省1").or().eq("latitude",latitude);//匹配字段值,没有set
        ProvinceInfo provinceInfo1=new ProvinceInfo();
        provinceInfo1.setProvince("广东省01");
        provinceInfo1.setLatitude(latitude);
        //UPDATE t_province_info SET province=?, latitude=? WHERE (province = ? OR latitude = ?)
        provinceInfoDAO.update(provinceInfo1,wrapper1);
    }

    /**
     * 升序降序
     *
     */
    @Test
    public void testOrderBy(){
        /**
         * 升序
         */
        //SELECT id,province,address,country,city,longitude,latitude FROM t_province_info ORDER BY id ASC
        QueryWrapper<ProvinceInfo> wrapper=new QueryWrapper<>();
        wrapper.orderByAsc("id");
        System.out.println(provinceInfoDAO.selectList(wrapper).get(0));
        /**
         * 降序
         */
        //SELECT id,province,address,country,city,longitude,latitude FROM t_province_info ORDER BY id DESC
        QueryWrapper<ProvinceInfo> wrapper1=new QueryWrapper<>();
        wrapper1.orderByDesc("id");
        System.out.println(provinceInfoDAO.selectList(wrapper1).get(0));

    }
    /**
     * 模糊查询
     */
    /*
    情况:
    1.like
    like("province","东")-->name like '%东%'
    2.notLike
     notLike("province","东")-->name not like '%东%'
    3.likeLeft
     likeLeft("province","东")-->name like '%东'
    4.likeRight
     likeRight("province","东")-->name like '东%'

     */
    @Test
    public void testLike(){
        QueryWrapper<ProvinceInfo> wrapper=new QueryWrapper<>();
//        wrapper.notLike("province","东");
        wrapper.like("province","东");
        List<ProvinceInfo> provinceInfos = provinceInfoDAO.selectList(wrapper);
        System.out.println(provinceInfos);
    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锐行织梦者

谢谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值