zoukankan      html  css  js  c++  java
  • SpringBoot利用Mybatis实现数据库信息的crud

      整个项目是使用Mybatis操作的数据库(Mybatis在前面也有总结使用的方法:https://www.cnblogs.com/zhaochunhui/p/11372793.html

      项目代码上传github:https://github.com/H-Designer/SpringBoot-Mybatis-CRUD

      项目在创建的时候,要选好我们需要的依赖的模块,web,mysql,jdbc,mybatis

      数据库连接的是虚拟机里面的,更换一下地址的ip就行

      

    #数据库信息的相关配置
    spring:
      datasource:
        url: jdbc:mysql://192.168.43.197:3306/cache
        username: root
        password: root
        driver-class-name: com.mysql.cj.jdbc.Driver
    #驼峰命名法的启用
    mybatis:
      configuration:
        map-underscore-to-camel-case: true

    数据库的连接信息根绝实际的情况进行填写就行

    项目实现的是员工信息的crud,创建一个employee的实体类

    package com.example.cache.bean;
    public class Employee {
        private Integer id;
        private String lastName;
        private String email;
        private Integer gender; //性别 1男  0女
        private Integer dId;
        public Employee() {
            super();
        }
        public Employee(Integer id, String lastName, String email, Integer gender, Integer dId) {
            super();
            this.id = id;
            this.lastName = lastName;
            this.email = email;
            this.gender = gender;
            this.dId = dId;
        }
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getLastName() {
            return lastName;
        }
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public Integer getGender() {
            return gender;
        }
        public void setGender(Integer gender) {
            this.gender = gender;
        }
        public Integer getdId() {
            return dId;
        }
        public void setdId(Integer dId) {
            this.dId = dId;
        }
        @Override
        public String toString() {
            return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + ", dId="
                    + dId + "]";
        }
    }

    用Mybatis操作数据库需要制定Mapper文件。有两种方式,一种是在mapper类文件上加上mapper的注解:@Mappaer

                              另一种是在启动函数或者是在配置文件中加上:@MapperScan("com.example.cache.mapper")具体的文件的路径根据实际情况修改

    package com.example.cache.mapper;
    import com.example.cache.bean.Employee;
    import org.apache.ibatis.annotations.Delete;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Select;
    import org.apache.ibatis.annotations.Update;
    public interface EmployeeMapper  {
        @Select("select * from employee where id=#{id}")
        public Employee getEmpById(Integer id);
    
        @Update("update employee set lastName=#{lastName},email=#{email},gender=#{gender},d_id=#{dId} where id=#{id}")
        public void updateEmp(Employee employee);
    
        @Delete("delete from employee where id=#{id}")
        public void deleteEmp(Integer id);
    
        @Insert("insert into employee(lastName,email,gender,d_id) values(#{lastName},#{email},#{gender},#{dId})")
        public void insertEmp(Employee employee);
    }

    这些就是对数据库信息的修改的形式,增删改查的底层的实现

    然后就是service的编写,实现具体的增删改查的类的编写:

    package com.example.cache.service;
    
    import com.example.cache.bean.Employee;
    import com.example.cache.mapper.EmployeeMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class EmployeeService {
        @Autowired
        EmployeeMapper employeeMapper;
        //查询员工信息
        public Employee getEmp(Integer id){
            System.out.println("查询"+id+"号员工信息");
            Employee emp = employeeMapper.getEmpById(id);
            return emp;
        }
        //删除员工信息
        public void deleteEmp(Integer id){
            System.out.println("删除"+id+"号员工信息");
            employeeMapper.deleteEmp(id);
        }
        //增加员工信息
        public void insertEmp(Employee employee){
            System.out.println("增加新的员工信息");
            employeeMapper.insertEmp(employee);
        }
        //修改员工信息
        public void updateEmp(Employee employee){
            System.out.println("修改"+employee.getId()+"号员工信息");
            employeeMapper.updateEmp(employee);
        }
    }

    具体的方法实现以后,就是在发送请求的时候,解析请求,实现具体的方法的调用:这就是Controller的内容了;

    package com.example.cache.controller;
    import com.example.cache.bean.Employee;
    import com.example.cache.service.EmployeeService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RestController;
    @RestController
    public class EmpController {
        @Autowired
        EmployeeService employeeService;
        //查询员工信息
        @GetMapping("/getEmp/{id}")
        public Employee getEmployee(@PathVariable("id") Integer id){
            Employee emp = employeeService.getEmp(id);
            return emp;
        }
        //删除员工信息
        @GetMapping("/deleteEmp/{id}")
        public void deleteEmployee(@PathVariable("id") Integer id){
             employeeService.deleteEmp(id);
        }
        //增加员工信息
        @GetMapping("/insertEmp")
        //这里,在传参的时候,只需要将床底的参数的名称和Bean里面的参数的名称一致即可,employee就可以接收到所有的参数信息
        public void insertEmployee(Employee employee){
            System.out.println(employee);
            employeeService.insertEmp(employee);
        }
        //修改员工信息
        @GetMapping("/updateEmp/{id}")
        public void updateEmployee(Employee employee,@PathVariable("id") Integer id){
            System.out.println(employee);
            employeeService.updateEmp(employee);
        }
    }

    这里需要值得一提的是,在我们的insert和update操作的时候,需要将员工的全部信息传递过去,这时候 不需要每一个参数进行一一的接收,我们只需要在我们传递参数的时候,将变量名和bean里面的变量名保持一致,这样就可以以实体类的方式,将全部的参数信息接收到。

  • 相关阅读:
    北航算法作业三
    水库抽样
    python命名空间
    我说
    Fn键
    windows批处理运行java程序
    Java Sound初探
    java.io.IOException: mark/reset not supported
    三层交换机对链路层数据帧的处理
    北航数值分析作业三
  • 原文地址:https://www.cnblogs.com/zhaochunhui/p/11392761.html
Copyright © 2011-2022 走看看