当前位置:   article > 正文

MyBatisPlus--黑马2024最新SpringCloud微服务开发与实战前置技能学习笔记_mybatisplus 微服务实战

mybatisplus 微服务实战

一、快速入门

1、入门案例

        1、引入MybatisPlus的起步依赖 官方提供了starter,集成了Mybatis和M'y'ba'ti's'Plus的所有功能,并且实现了自动装配效果。

        2、定义Mapper

                自定义的Mapper继承MybatisPlus提供的BaseMapper接口

                因为BaseMapper接口中已经定义了各种crud的方法,注意在继承过程中的泛型为实体类的类型

  1. public interface UserMapper extends BaseMapper<User>{
  2. }

              继承之后,UserMapper.xml中的sql不用写了,  上面这个接口中的方法也不要了,直接调用BaseMapper里的方法就行 --eg 新增 userMapper.insert(user);

2、常见注解

MyBatisPlus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息。

@TableName:用来指定表名 (加到类上

@TableId:用来指定表中的主键字段信息(加到id字段上,*要么有id字段,要么用注解指出

@TableId(value="id" , type=Idtype.AUTO)

@TableField:用来指定表中的普通字段信息(加在对应字段上

3、常见配置

 

二、核心功能

1、条件构造器

基于QueryWrapper的查询

需求:1、查询出名字带o的,存款大于等于1000元的id、username、info、balance字段

        SELECT id,username,info,balance

        FROM user

        WHERE username LIKE 'o' AND balance >= 1000


 QueryWrapper<User> wrapper = new QueryWrapper<User>()

        .select("id","username","info","balance")

        .like("username","o")

        .ge("balancfe",1000);

List <User> user = userMapper.selectList(wrapper);

2、更新余额为jack的用户的余额为2000

        UPDATE user

                SET balance = 2000

                WHERE (username="jack")


//1、要更新的数据

        User user = new User();

        user.setBalance(2000);

//2、更新的条件

        QueryWtapper<User> wrapper = new QueryWrapper<User>.eq("name","jack");

//3、执行更新

        userMapper.update(user,wrapper);

基于UpdateWrapper的更新

需求:更新id为1,2,4的用户的余额,扣200

UPDATE user

        SET balace = balace - 200

        WHERE id in (1,2,4)


List<Long> ids = List.of(1L,2L,4L);

UpdateWrapper<User> wrapper = new UpdateWrapper<User>()

        .setSql("balance = balance - 200")

        .in("id" , ids)

userMapper.update(null,wrapper);

2、自定义SQL

我们可以利用MyBatis的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分

3、Service接口

        很多,很方便

(强调注意一下传两个泛型

Iservice开发基础业务接口

学习视频 ----下述接口开发很基础的流程,讲的很好

MybatisPlus-08.核心功能-IService开发基础业务接口_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1S142197x7/?p=9&spm_id_from=pageDriver&vd_source=ab8be3755f2155899a0dbddb41b224e3

swagger:单元测试  待学习(和Junit区别

@Api(tags = "用户管理接口" )

@RequestMapping("/users")
@RestController

@RequiredArgsConstruction // 必要的构造函数,代替@Autowired进行注入
public class UserController(){

        private final IUserService userService

        @ApiOpration("新增用户接口")

        @PostMapping

        public void saveUser(@requestBody UserFormDTO userDTO){

               //1、把DTO拷贝到TO

                User user = BeanUtil.copyProperties(userDTO , User.class);

                //2、新增

                userService.save(user);

        }

        

        @ApiOpration("删除用户接口")

        @DeleteMapping("{id}")

        public void deleteUserById(@ApiParam("用户id")@PathVariable("id") Long id){

                userService.removeById(id);

        }

      @ApiOpration("根据id查询用户接口")

        @GetMapping("{id}")

        public UserVO queryUserById(@ApiParam("用户id")@PathVariable("id") Long id){

               //1、查询用户PO

                User user = userService.getById(id);

                //2、把PO拷贝到VO

                return BeanUtil.copyPropertise(user , UserVO.class)

        }

        

      @ApiOpration("根据id批量查询用户接口")

        @GetMapping

        public LIst<UserVO> queryUserById(@ApiParam("用户id集合")@RequestParam("ids") List<Long> ids){

               //1、查询用户PO

                List<User> users = userService.listByIds(ids);

                //2、把PO拷贝到VO

                return BeanUtil.copyToList(user , UserVO.class)

        }

}


Iservice的Lambda方法

MybatisPlus-10.核心功能-IService的Lambda方法_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1S142197x7?p=11&vd_source=ab8be3755f2155899a0dbddb41b224e3


        Controller层的接口和Iservice开发基础业务接口中的更新余额一致


Iservice批量新增

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/979353
推荐阅读
相关标签
  

闽ICP备14008679号