springboot 整合 mybatis plus postgresql

依赖

<!--mybatis-plus-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.2.0</version>
    </dependency>

<!--postgresql-->
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>

建表测试

数据库表

create table t_club
(
  id          serial primary key,
  name        varchar(32) not null,
  money       int,
  nick_name   varchar(32),
  birthday    TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
  create_time TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
  update_time TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

实体类

package com.my.mybatis.test.demo.po;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.util.Date;

/**
 * @author wangli66
 ***************************************************/
@Data
@TableName("t_club")
public class ClubPo {
    /**
     * 主键
     * @TableId中可以决定主键的类型,不写会采取默认值,默认值可以在yml中配置
     * AUTO: 数据库ID自增
     * INPUT: 用户输入ID
     * ID_WORKER: 全局唯一ID,Long类型的主键
     * ID_WORKER_STR: 字符串全局唯一ID
     * UUID: 全局唯一ID,UUID类型的主键
     * NONE: 该类型为未设置主键类型
     */
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String name;
    private Double money;
    private String nickName;
    private Date birthday;
    private Date createTime;
    private Date updateTime;
}

mapper

package com.my.mybatis.test.demo.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.my.mybatis.test.demo.po.ClubPo;
/**
 * @author wangli66
 ***************************************************/
public interface ClubMapper extends BaseMapper<ClubPo> {
}

测试类

package com.my.mybatis.test.demo.test;

import com.my.mybatis.test.demo.dao.ClubMapper;
import com.my.mybatis.test.demo.dao.MoneyMapper;
import com.my.mybatis.test.demo.dao.StudentMapper;
import com.my.mybatis.test.demo.po.ClubPo;
import com.my.mybatis.test.demo.po.MoneyPo;
import com.my.mybatis.test.demo.po.StudentPo;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Arrays;
import java.util.List;

/**
 * @author
 ***************************************************/
@SpringBootTest
public class TetMP {
    private Logger logger = LoggerFactory.getLogger(TetMP.class);
   
    @Autowired
    ClubMapper clubMapper;

    @Test
    public void test3() {
        String[] nameArr = {"xiaoming","xiaohong","xiaolan","xiaohua","xiaomei"};
        String[] nickArr = {"Tom","Tony","Lily","Marry","Jerry"};
        for(int i=0;i<5;i++) {
            ClubPo clubPo = new ClubPo();
            clubPo.setName(nameArr[i]);
            clubPo.setMoney(9999.0*(i+1));
            clubPo.setNickName(nickArr[i]);
            clubPo.setBirthday(new Date());
            clueMapper.insert(clubPo);
        }

        ClubPo clubPo = clubMapper.selectById(1);
        logger.info("按id查询:"+clubPo);

        List<ClubPo> clubPos = clubMapper.selectBatchIds(Arrays.asList(1, 2, 3));
        logger.info("按id批量查询:"+clubPos);

    }
}

数据库表
在这里插入图片描述

整体流程走一遍

controller

package com.my.mybatis.test.demo.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.my.mybatis.test.demo.po.ClubPo;
import com.my.mybatis.test.demo.service.ClubService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 
 ***************************************************/
@RestController
@RequestMapping("/club")
public class ClubController {

    @Autowired
    private ClubService clubService;

    /**
     * @Description: 按id查询
     * @param: [id]
     * @return: com.my.mybatis.test.demo.po.ClubPo
     * @Date: 2020/4/23
     */
    @RequestMapping("/getInfo")
    public ClubPo getInfo(String id) {
        return clubService.getById(id);
    }

    /**
     * @Description: 查询全量,不分页
     * @param: []
     * @return: java.util.List<com.my.mybatis.test.demo.po.ClubPo>
     * @Date: 2020/4/23
     */
    @RequestMapping("/getAll")
    public List<ClubPo> getAll() {
        return clubService.list();
    }

    /**
     * @Description: 分页查询
     * @param: [current, pageSize]
     * @return: com.baomidou.mybatisplus.core.metadata.IPage<com.my.mybatis.test.demo.po.ClubPo>
     * @Date: 2020/4/23
     */
    @RequestMapping("/page")
    public IPage<ClubPo> getPage(int current, int pageSize) {
        IPage<ClubPo> clubPoIPage = new Page<>();
        clubPoIPage.setCurrent(current);
        clubPoIPage.setSize(pageSize);
        IPage<ClubPo> page = clubService.page(clubPoIPage);
        return page;
    }

    /**
     * @Description: 条件查询
     * @param: [po]
     * @return: java.lang.Object
     * @Date: 2020/4/23
     */
    @RequestMapping("/getListMap")
    public Collection<ClubPo> getListMap(ClubPo po) {
        Map<String,Object> param = new HashMap<>();
        param.put("name",po.getName());
        param.put("nickName",po.getNickName());
        Collection<ClubPo> clubPos = clubService.listByMap(param);
        return clubPos;
    }
    
    /**
     * @Description: 保存
     * @param: [po]
     * @return: void
     * @Date: 2020/4/23
     */
    @RequestMapping("/save")
    public boolean save(ClubPo po) {
        boolean save = clubService.save(po);
        return save;
    }

    /**
     * @Description: 批量保存
     * @param: [pos]
     * @return: boolean
     * @Date: 2020/4/23
     */
    @RequestMapping("/batchSave")
    public boolean batchSave(List<ClubPo> pos) {
        boolean b = clubService.saveBatch(pos);
        return b;
    }

    /**
     * @Description: 按id进行更新,不需要更新的字段传值为null
     * @param: [po]
     * @return: boolean
     * @Date: 2020/4/23
     */
    @RequestMapping("/update")
    public boolean update(ClubPo po) {
        boolean b = clubService.updateById(po);
        return b;
    }

    /**
     * @Description: 按id进行批量更新,不需要更新的字段传值为null
     * @param: [po]
     * @return: boolean
     * @Date: 2020/4/23
     */
    @RequestMapping("/batchUpdate")
    public boolean batchUpdate(List<ClubPo> pos) {
        boolean b = clubService.updateBatchById(pos);
        return b;
    }

    /**
     * @Description: 不确定数据库中是否存在时
     * 入的实体类中ID为null就会新增(ID自增),
     * 实体类ID值存在,如果数据库存在ID就会更新,如果不存在就会新增
     * @param: [po]
     * @return: boolean
     * @Date: 2020/4/23
     */
    @RequestMapping("/saveOrUpdate")
    public boolean saveOrUpdate(ClubPo po) {
        boolean b = clubService.saveOrUpdate(po);
        return b;
    }

   /**
    * @Description: 通过id删除
    * @param: [userId]
    * @return: void
    * @Date: 2020/4/23
    */
    @RequestMapping("/delete")
    public void delete(String id){
        clubService.removeById(id);
    }

    /*-------------------------以下为复杂查询------------------------------*/

    /**
     * @Description: 条件查询
     * @param: [po]
     * @return: void
     * @Date: 2020/4/23
     */
    @RequestMapping("/queryByCondition")
    public void queryByCondition(ClubPo po) {
        // 构建warpper
        QueryWrapper<ClubPo> wrapper = new QueryWrapper<>();
        // 查名字叫:xiaoming
        // 同sql: select id,name,nickname,money,birthday,create_time,update_time from t_club where name = "xiaoming"
        wrapper.lambda().eq(ClubPo::getName,"xiaoming");
        clubService.list(wrapper);

        // 查生日在
        wrapper = new QueryWrapper<>();
        // 同sql: select id,name,nickname,money,birthday,create_time,update_time from t_club where birthday > "2020-04-23 14:27:37.317000" and birthday < "2020-04-23 14:27:37.317000"
        wrapper.lambda().gt(ClubPo::getBirthday,new Date(System.currentTimeMillis()-1000));
        wrapper.lambda().le(ClubPo::getBirthday,new Date(System.currentTimeMillis()+1000));
        clubService.list(wrapper);

        // 查名字中有xiao的用户,并按照创建时间降序排列
        wrapper = new QueryWrapper<>();
        // 同sql: select id,name,nickname,money,birthday,create_time,update_time from t_club where name like "%xiao%" orderby create_time desc
        wrapper.lambda().like(ClubPo::getName,"xiao");
        wrapper.lambda().orderByDesc(ClubPo::getCreateTime);
        clubService.list(wrapper);

		// 使用mapper查询所有, select * from t_club
		List<Club> clubs = clubMapper.selectList(null);// 传null可查
    }
}

service

package com.my.mybatis.test.demo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.my.mybatis.test.demo.po.ClubPo;

/**
 * @author 
 ***************************************************/
public interface ClubService extends IService<ClubPo> {
}

impl

package com.my.mybatis.test.demo.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.my.mybatis.test.demo.dao.ClubMapper;
import com.my.mybatis.test.demo.po.ClubPo;
import com.my.mybatis.test.demo.service.ClubService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author 
 ***************************************************/
@Service
@Transactional
public class ClubServiceImpl extends ServiceImpl<ClubMapper, ClubPo> implements ClubService {
}

wrapper参数

当查询条件复杂的时候,我们可以使用MP的条件构造器,请参考下面的QueryWrapper条件参数说明

查询方式方法说明
setSqlSelect设置 SELECT 查询字段
whereWHERE 语句,拼接 + WHERE 条件
andAND 语句,拼接 + AND 字段=值
orOR 语句,拼接 + OR 字段=值
eq等于=
allEq基于 map 内容等于=
ne不等于<>
gt大于>
ge大于等于>=
lt小于<
le小于等于<=
like模糊查询 LIKE
notLike模糊查询 NOT LIKE
inIN 查询
notInNOT IN 查询
isNullNULL 值查询
isNotNullIS NOT NULL
groupBy分组 GROUP BY
havingHAVING 关键词
orderBy排序 ORDER BY
orderByAscASC 排序 ORDER BY
orderByDescDESC 排序 ORDER BY
existsEXISTS 条件语句
notExistsNOT EXISTS 条件语句
betweenBETWEEN 条件语句
notBetweenNOT BETWEEN 条件语句
addFilter自由拼接 SQL
last拼接在最后,例如:last(“LIMIT 1”)
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值