Springboot Mabatis案例

        Springboot综合练习,使用三层架构,结合Mybatis操作数据库,接收前端发送的请求,并进行对应的逻辑处理,对数据库增删改查。

        pojo

package com.wzb.pojo20240928;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {
    private Integer id;
    private String name;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
}
package com.wzb.pojo20240928;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    private Integer code; // 响应码,1是响应成功,2是响应失败
    private String message; // 响应信息,描述响应结果的字符串
    private Object data; // 响应返回的数据

    // 响应成功,但不返回数据的方法
    public static Result success() {
        return new Result(1, "success", null);
    }
    // 响应成功,并且返回数据的方法
    public static Result success(Object data) {
        return new Result(1,"success", data);
    }
    // 响应失败的方法
    public static Result fail(String message) {
        return new Result(0, message, null);
    }
}

        Controller

package com.wzb.controller20240928;

import com.wzb.pojo20240928.Dept;
import com.wzb.pojo20240928.Result;
import com.wzb.service20240928.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

// 此注解是控制层的注解
@RestController
// 此注解是为了简化请求路径,将重复的请求路径抽取到RequestMapping中
@RequestMapping("/depts")
public class DeptController {
    @Autowired
    private DeptService deptService;

    // 增
    @PostMapping
    public Result insertDept(@RequestBody Dept dept) {
        System.out.println("新增一个部门");
        deptService.insertDept(dept);
        return Result.success(dept);
    }

    // 删
    // 前端会在请求路径上加入id,需要在@DeleteMapping中使用{id}来接收这个id,并且用@PathVariable注解将路径变量绑定到方法参数上
    @DeleteMapping("/{id}")
    public Result deleteDept(@PathVariable Integer id) {
        System.out.println("删除一个部门");
        deptService.deleteDept(id);
        return Result.success();
    }

    // 改
    @PutMapping
    public Result updateDept(@RequestBody Dept dept) {
        System.out.println("修改一个部门");
        deptService.updateDept(dept);
        return Result.success();
    }

    // 查
    @GetMapping
    public Result selectDept() {
        System.out.println("所有部门信息");
        List<Dept> deptList = deptService.selectDept();
        return Result.success(deptList);
    }

}

        Service

package com.wzb.service20240928;

import com.wzb.mapper20240928.DeptMapper;
import com.wzb.pojo20240928.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


public interface DeptService {
    // 增
    public void insertDept(Dept dept);

    // 删
    public void deleteDept(Integer id);

    // 改
    public void updateDept(Dept dept);

    // 查
    public List<Dept> selectDept();
}

        

package com.wzb.service20240928;

import com.wzb.mapper20240928.DeptMapper;
import com.wzb.pojo20240928.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

@Service
public class DeptServiceImplement implements DeptService {
    @Autowired
    private DeptMapper deptMapper;

    // 增
    @Override
    public void insertDept(Dept dept) {
        // 前端发送的数据一般只有名字,id由数据库自动生成;后端需要补全create_time和update_time
        dept.setCreateTime(LocalDateTime.now());
        dept.setUpdateTime(LocalDateTime.now());
        // 使用Mapper对象操作数据库
        deptMapper.insertDept(dept);
    }

    // 删
    @Override
    public void deleteDept(Integer id) {
        // 前端会发送id来指定要删除的部门,只需要直接调用deptMapper传递id即可
        deptMapper.deleteDept(id);
    }

    // 改
    public void updateDept(Dept dept) {
        // 前端在修改部门时,会传递修改后的名字和选择修改的部门的id,后端需要补全的是update_time
        dept.setUpdateTime(LocalDateTime.now());
        deptMapper.updateDept(dept);
    }

    // 查
    public List<Dept> selectDept() {
        // 查询所有的部门信息,然后封装到List中返回
        return deptMapper.selectDept();
    }
}

        Mapper

package com.wzb.mapper20240928;

import com.wzb.pojo20240928.Dept;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface DeptMapper {

    // 增
    @Insert("insert into dept (name, create_time, update_time) values(#{name}, #{createTime}, #{updateTime})")
    public void insertDept(Dept dept);

    // 删
    @Delete("delete from dept where id=#{id}")
    public void deleteDept(Integer id);

    // 改
    @Update("update dept set name=#{name}, update_time=#{updateTime} where id=#{id}")
    public void updateDept(Dept dept);

    // 查
    @Select("select * from dept")
    public List<Dept> selectDept();
}

 

 

 

 

 

        

       

好的,这里提供一个简单的SpringBoot+Mybatis接口案例。 1. 首先,创建一个SpringBoot项目,可以使用IDEA或Eclipse等集成开发环境进行创建。 2. 在pom.xml文件中添加SpringBootMybatis的依赖: ``` <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> </dependencies> ``` 其中,spring-boot-starter-web是SpringBoot的Web模块,mybatis-spring-boot-starter是MybatisSpringBoot集成模块,mysql-connector-java是MySQL的JDBC驱动。 3. 创建一个数据表,并在MySQL数据库中插入一些数据,例如: ``` CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ); INSERT INTO `user` (`name`, `age`) VALUES ('张三', 20); INSERT INTO `user` (`name`, `age`) VALUES ('李四', 25); INSERT INTO `user` (`name`, `age`) VALUES ('王五', 30); ``` 4. 创建一个实体类User,用于映射数据表中的数据: ``` public class User { private int id; private String name; private int age; // getter和setter方法省略 } ``` 5. 创建一个Mapper接口UserMapper,用于定义对User表操作的方法: ``` @Mapper public interface UserMapper { @Select("SELECT * FROM user") List<User> getAllUsers(); } ``` 其中,@Mapper注解是Mybatis提供的,可以将该接口声明为一个Mapper接口,@Select注解表示查询语句。 6. 创建一个Service接口UserService,用于调用Mapper接口中的方法: ``` public interface UserService { List<User> getAllUsers(); } ``` 7. 创建UserService的实现类UserServiceImpl,注入UserMapper接口,并实现UserService接口中的方法: ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public List<User> getAllUsers() { return userMapper.getAllUsers(); } } ``` 其中,@Service注解表示该类为Spring的Service类,@Autowired注解表示自动注入UserMapper接口。 8. 创建一个Controller类UserController,用于接收前端请求并调用UserService的方法: ``` @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping("/") public List<User> getAllUsers() { return userService.getAllUsers(); } } ``` 其中,@RestController注解表示该类为Spring的RestController类,@RequestMapping注解表示请求的URL,@GetMapping注解表示GET请求。 9. 运行SpringBoot应用程序,在浏览器中输入"http://localhost:8080/users/"即可访问接口,获取User表中的所有数据。 以上就是一个简单的SpringBoot+Mybatis接口案例,其中包括了数据表的创建、Mybatis的使用、Service和Controller的编写等内容,希望对你有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值