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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!