Springboot03--restful、swagger+orm/mybatis,mybatis-plus

Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第1张图片

 Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第2张图片

 Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第3张图片

 Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第4张图片

 Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第5张图片

Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第6张图片 Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第7张图片

 Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第8张图片

 Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第9张图片

 Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第10张图片

 参考这个方法配置,主要是我的springboot和swagger的版本号的问题

SpringBoot2.7.14集成Swagger3.0 (liqinglin0314.com)

常用的一些注解

Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第11张图片

放在controller里面

2. mybatisplus

Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第12张图片

Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第13张图片


        
            com.baomidou
            mybatis-plus-boot-starter
            3.4.2
        
        
        
            mysql
            mysql-connector-java
            5.1.47
        
        
        
            com.alibaba
            druid-spring-boot-starter
            1.1.20
        

配置

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/hy-park?useSSL=false
    username: root
    password: 123123

  mybatis-plus:
    configuration:
      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

 假设要对用户列表进行操作,先定义一个用户操作数据的接口,叫UserMaper

@Mapper
public interface UserMapper {
    @Select("select * from user") //数据库查询语句,mybatis用注解查询的
    public List find(); //定义查找方法,返回为User的一个列表
//这里这俩是一体的,上面是sql语句,下面给这个语句一个方法,方便调用
}

 接下来去主文件那边加一个mapperscan的注解,表示要扫描这边

@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class Demo2Application {
	public static void main(String[] args) {
		SpringApplication.run(Demo2Application.class, args);
	}

}

最后写个用户的controller

@RestController
public class UserController {

    @Autowired //注解必须加上
    private UserMapper userMapper; //这边定义一下接口就行不用实例化

    @GetMapping("/user")
    public List query(){ //这里返回后会自动转成json格式
        List list = userMapper.find(); //调用接口的find方法
        System.out.println(list);
        return list; //返回数据给前端
    }
}

 搞定了

Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第14张图片

insert操作:

@Insert("insert into user values (#{id}, #{name}, #{password}, #{birthday})")
    public int insert(User user);//上面#{}里面的形参就是下面前端传进来的user里面的属性会传进去
@PostMapping("/user")
    public String save(User user){
        int i = userMapper.insert(user);
        if(i > 0){
            return "插入回成功" + i;
        }else{
            return "插入失败";
        }
    }

Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第15张图片

 以上都是mybatis的内容,mybatis plus的内容往下看

1. 改mapper,继承下来一堆Basemapper的方法,不用自己写了

public interface UserMapper extends BaseMapper { 
    //继承basemapper,传的参数告诉他我要操作哪个类,前提是类名和表名一致

2. 改controller那边的代码,直接用继承的方法就可以

    @GetMapping("/user")
    public List query(){ //这里返回后会自动转成json格式
        List list = userMapper.selectList(null); //直接继承方法
        System.out.println(list);
        return list; //返回数据给前端
    }

    @PostMapping("/user")
    public String save(User user){
        int i = userMapper.insert(user);
        if(i > 0){
            return "插入回成功" + i;
        }else{
            return "插入失败";
        }
    }

其他内容可以直接上官网学习,感觉写的也蛮好的,多看看注解那边

3. mybatisplus 多表查询分页查询

Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第16张图片 

两个表:

user表格

Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第17张图片

 t_order表

Springboot03--restful、swagger+orm/mybatis,mybatis-plus_第18张图片

目标一:一次性查询所有用户,并且能看到每个用户的n个订单

1. 先在用户类里面,加上一个orders属性,表示当前用户的订单(注意,set,get,tostring都需要加上,不然显示不出来orders)

@TableField(exist = false)
    //这句话意思是告诉mybatis-plus这个order字段在数据库的user表里面不存在
    private List orders;

​​​​​​​2. 定义order类 

3. 去usermapper里面加上方法,用到映射

@Select("select * from user")
    // MyBatis中使用@Results注解来映射查询结果集到实体类属性。
    @Results({
            @Result(column = "id", property = "id"),
            //表示一种映射,前面是查询到的user表里的内容,后面是user类里面的属性
            @Result(column = "birthday", property = "birthday"),
            @Result(column = "name", property = "name"),
            @Result(column = "password", property = "password"),
            @Result(column = "id", property = "orders",javaType = List.class,
                    many = @Many(select = "com.example.demo.mapper.OrderMapper.selectByUid"))
            //注意 这边就会把查询到的id传给后面selectByUid的参数,也就是order表格按照用户id查询订单,返回多个orders

    })
    List selectAllUsersAndOrders();

4. 去ordermapper里面加上根据uid返回数据的方法

    @Select("select * from t_order where uid = #{uid}")
    List selectByUid(int uid);

5. 去usercontroller里面调用这个方法

   @GetMapping("/user/findAll")
    public List find(){
        return userMapper.selectAllUsersAndOrders();
    }

目标二:一次性显示所有订单,并且显示与之相关联的用户信息

1. 在order类里面加上user属性,因为一个订单只能有一个用户,所以,不是list了

 @TableField(exist = false)
    private User user;

2. ordermapper里面加上查询语句

@Select("select * from t_order")
    @Results({
            @Result(column = "id",property = "id"),
            @Result(column = "total",property = "total"),
            @Result(column = "order_time",property = "order_time"),
            @Result(column = "uid", property = "user", javaType = User.class,
            one = @One(select = "com.example.demo.mapper.UserMapper.findById"))
    })
    List selectAllOrdersAndUsers();

3. usermapper里面加上根据id查询的语句

  @Select("select * from user where id = #{id}")
    User findById();

4. ordercontroller调用,注意一定要加上那个@Autowired!!!!!!!!!!

   @Autowired
    private OrderMapper orderMapper;
    @GetMapping("/findeorder")
    List find(){
        return orderMapper.selectAllOrdersAndUsers();
    }

接下来是mybatis-plus的分页和单表查询,我觉得用到再说吧,不是很重要的感觉

你可能感兴趣的:(Springboot,restful,后端)