Mybatis-plus实际开发步骤

2023-12-25 19:39:23

一、Mybatis-plus基本配置
1、pom.xml导入Mybatis-plus依赖

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

2、application.yml文件中配置MySQL数据库和日志信息

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:7120/svc_test?allowPublicKeyRetrieval=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Hongkong
    username: root
    password: root
//日志    
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3、以下用Duty实体为例子

@TableName("duty")
public class Duty {
    @TableId(type = IdType.AUTO) /** id自增 */
    private int id;
    /** 业务ID */
    private int did;
    /** 用户名称 */
    @TableField("user_name") /** 数据库表字段名不一致,数据库默认驼峰命名转下划线 */
    private String userName;
    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createdTime;
    
    @TableField(exist = false) /** 数据库表中没有的字段用@TableField(exist=false)标注 */
    private List<DutyTeam> children;
}

4、Mapper层:创建Mapper接口继承BaseMapper

public interface DutyMapper extends BaseMapper<Duty> {
}

5、Service层:创建Service类,继承ServiceImpl<DutyMapper, Duty>类,并实现IService接口

@Service
public class DutyService  extends ServiceImpl<DutyMapper, Duty> implements IService<Duty> {

    protected final Logger log = LoggerFactory.getLogger(getClass());

    /** 根据业务DID获取班组列表 */
    public List<Duty> listByDid(int did) {
        //相当于: select * from duty where did=?
        return list(new LambdaQueryWrapper<>(Duty.class).eq(Duty::getDid,did));
    }
}

6、controller层:

@RestController
public class ChangeController {

    @Autowired
    private DutyService dutyService;

    /**
     * 根据业务DID获取班组列表
     */
    @GetMapping("duty/getDutyList")
    public List<Duty> getDutyList(@RequestParam Integer did) throws Exception {
        
        return dutyService.listByDid(did);
    }
}

二、查询修改基本操作:可以使用QueryWrapper也可以使用LambdaQueryWrapper,我更喜欢用Lambda方式

在这里插入图片描述

例子:
1、根据did查询一条值班数据

    public Duty getByOid(String did) {
        return getOne(new LambdaQueryWrapper<>(Duty.class)
                .eq(Duty::getDid,did).last("limit 1"));
    }

2、and与or用法:

public List<Duty> userList() {
    LambdaQueryWrapper<Duty> wrapper = Wrappers.lambdaQuery();

    // SELECT * FROM duty WHERE (name = ? AND id = ?)
    wrapper.eq(Duty::getUserName, "张三").eq(Duty::getId,1);

    // SELECT * FROM duty WHERE (name = ? OR id = ?)       
    wrapper.eq(Duty::getUserName, "张三").or().eq(Duty::getId,1);     
    return this.baseMapper.selectList(wrapper);
    //写法二:return list(wrapper);
}

3、修改与查询差不多,修改用的是LambdaUpdateWrapper

private void updateByDid(Duty duty) {
	//根据did找到数据库中这条数据,然后修改数据为duty对象中的值
    LambdaUpdateWrapper<Duty> updateWrapper = new LambdaUpdateWrapper<>();
    updateWrapper.eq(Duty::getDid,duty.getDid());
    this.update(duty, updateWrapper);
}
public void updateTest() {
   //update duty set user_name='张三',did=4 where id=1
   LambdaUpdateWrapper<Duty> updateWrapper = new LambdaUpdateWrapper<>();
   updateWrapper.eq(Duty::getId,1);
   updateWrapper.set(Duty::getUserName,"张三");
   updateWrapper.set(Duty::getDid,4);
   this.update(null, updateWrapper);
}

欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感谢。觉得本文章有帮助到的,点个赞呗

文章来源:https://blog.csdn.net/qq_41936224/article/details/135200746
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。