一、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);
}
欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感谢。觉得本文章有帮助到的,点个赞呗