Springboot整合Mybatis web小项目

Springboot整合Mybatis   web小项目

目录

Springboot整合Mybatis   web小项目

1.在pom.xml导入相关的依赖.

2.建立数据库

3.编写实体类Entity

4.配置application.properties

5.Service层

6.Controller层

7.页面实现的效果


1.在pom.xml导入相关的依赖.

Mybatis相关的依赖

  <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>

Mysql驱动相关的依赖

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
            <scope>runtime</scope>
        </dependency>

Druid 连接池相关的依赖

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.17</version>
        </dependency>

PageHelper 分页插件

 <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.13</version>
        </dependency>

2.建立数据库

建立部门表department

CREATE TABLE `department`  (
  `dept_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `dept_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '部门名称',
  PRIMARY KEY (`dept_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1000 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门表' ROW_FORMAT = Dynamic;

建立员工表:Employee

CREATE TABLE `employee`  (
  `emp_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `emp_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '员工名',
  `dept_id` int(11) NOT NULL COMMENT '关联部门表主键',
  `gender` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '性别',
  `email` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '邮箱',
  `phone` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '手机号',
  `hire_date` datetime(0) DEFAULT NULL COMMENT '入职时间',
  PRIMARY KEY (`emp_id`) USING BTREE,
  INDEX `dept_id`(`dept_id`) USING BTREE,
  CONSTRAINT `employee_ibfk_1` FOREIGN KEY (`dept_id`) REFERENCES `department` (`dept_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 1008 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '员工表' ROW_FORMAT = Dynamic;

3.编写实体类Entity

1.Department.java

public class Department {
    private Integer deptId;
    private String deptName;
    private List<Employee> employees;

    public List<Employee> getEmployees() {
        return employees;
    }

    public void setEmployees(List<Employee> employees) {
        this.employees = employees;
    }

    public Integer getDeptId() {
        return deptId;
    }

    public void setDeptId(Integer deptId) {
        this.deptId = deptId;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    @Override
    public String toString() {
        return "Department{" +
                "deptId=" + deptId +
                ", deptName='" + deptName + '\'' +
                ", employees=" + employees +
                '}';
    }
}

2.Employee.java

public class Employee {

    private Integer empId;
    private String empName;
    private String gender;
    private String email;
    private String phone;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date hireDate;

    //多对一
    private Department department;

    public Integer getEmpId() {
        return empId;
    }

    public void setEmpId(Integer empId) {
        this.empId = empId;
    }

    public String getEmpName() {
        return empName;
    }

    public void setEmpName(String empName) {
        this.empName = empName;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Date getHireDate() {
        return hireDate;
    }

    public void setHireDate(Date hireDate) {
        this.hireDate = hireDate;
    }

    public Department getDepartment() {
        return department;
    }

    public void setDepartment(Department department) {
        this.department = department;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "empId=" + empId +
                ", empName='" + empName + '\'' +
                ", gender='" + gender + '\'' +
                ", email='" + email + '\'' +
                ", phone='" + phone + '\'' +
                ", hireDate=" + hireDate +
                ", department=" + department +
                '}';
    }
}

3.编写Mapper层

1.DepartmentMapper 
@Mapper
@Repository
public interface DepartmentMapper {
    /**
     * 获取部门列表
     * @return
     */
    List<Department> getDepartmentList();

    /**
     * 根据部门ID查询部门信息
     * @param deptId
     * @return
     */
    Department getDepartmentByDeptId(Integer deptId);

    /**
     * 根据部门ID查询部门详情
     * @param deptId
     * @return
     */
    Department getDepartmentByDeptId_(Integer deptId);

}

2.EmployeeMapper

@Mapper
public interface EmployeeMapper {

    /**
     * 添加员工
     * @param employee
     */
    void addEmployee(Employee employee);


    /**
     * 删除员工
     */
    void deleteEmployeeByEmpId(Integer empId);


    /**
     * 更新员工
     */
    void updateEmployee(Employee employee);

    /**
     * 查询员工列表
     * @return
     */
    List<Employee> getEmployeeList();

    /**
     * 根据员工ID查询员工信息
     * @param empId
     * @return
     */
    Employee getEmployeeByEmpId(Integer empId);
}

3.配置mapper.xml文件

通过用xml文件注解的形式实现上面的接口

departmentMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.snow.mapper.DepartmentMapper">

    <select id="getDepartmentList" resultType="department">
        select * from department
    </select>
    
    <select id="getDepartmentByDeptId" resultType="department" parameterType="int">
        SELECT * FROM department WHERE dept_Id=#{deptId}
    </select>
    <resultMap id="deptMap" type="department">
        <id column="dept_id" property="deptId"></id>
        <result column="dept_name" property="deptName"></result>
        <collection property="employees" ofType="employee">
            <id column="emp_id" property="empId"></id>
            <result column="emp_name" property="empName"></result>
            <result column="email" property="email"></result>
            <result column="gender" property="gender"></result>
            <result column="phone" property="phone"></result>
            <result column="hire_date" property="hireDate"></result>

        </collection>

    </resultMap>

    <select id="getDepartmentByDeptId_" parameterType="int" resultMap="deptMap">
        select * FROM department d,employee e WHERE d.dept_id=e.dept_id and d.dept_id=#{deptId}
    </select>
</mapper>

employeeMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.snow.mapper.EmployeeMapper">

    <resultMap id="empMap" type="employee">
        <id column="emp_id" property="empId"></id>
        <result column="emp_name" property="empName"></result>
        <result column="gender" property="gender"></result>
        <result column="email" property="email"></result>
        <result column="phone" property="phone"></result>
        <result column="hire_Date" property="hireDate"></result>
        <association property="department" javaType="department">
            <id column="dept_id" property="deptId"></id>
            <result column="dept_name" property="deptName"></result>
        </association>
    </resultMap>
<!--根据用户id查询员工信息-->
    <select id="getEmployeeByEmpId" resultMap="empMap" parameterType="int">
        select * from employee e,department d where e.dept_id=d.dept_id and e.emp_id=#{empId}
    </select>


    <resultMap id="empMap_" type="employee">
        <id column="emp_id" property="empId"></id>
        <result column="emp_name" property="empName"></result>
        <result column="gender" property="gender"></result>
        <result column="email" property="email"></result>
        <result column="phone" property="phone"></result>
        <result column="hire_date" property="hireDate"></result>
        <association property="department" column="dept_id" javaType="department" select="com.snow.mapper.DepartmentMapper.getDepartmentByDeptId"></association>
    </resultMap>
    <!--查询全部-->
    <select id="getEmployeeList" resultMap="empMap_">
        SELECT * FROM employee e,department d where e.dept_id=d.dept_id
    </select>

    <!--添加用户-->
    <insert id="addEmployee" parameterType="employee" useGeneratedKeys="true" keyProperty="empId">
        INSERT into employee
        (emp_name,gender,email,phone,hire_date,dept_id)
        VALUES
        (#{empName},#{gender},#{email},#{phone},#{hireDate},#{department.deptId})
    </insert>

    <!--删除员工-->
    <delete id="deleteEmployeeByEmpId" parameterType="int" >
        DELETE FROM employee WHERE emp_id=#{empId}
    </delete>

    <!--更新员工-->
    <update id="updateEmployee" parameterType="employee">
        UPDATE employee
        <set>
            <if test="empName!=null">emp_name=#{empName},</if>
            <if test="gender!=null">gender=#{gender},</if>
            <if test="email!=null">email=#{email},</if>
            <if test="phone!=null">phone=#{phone},</if>
            <if test="hireDate!=null">hire_date=#{hireDate},</if>
            <if test="department!=null and department.deptId!=null">dept_id=#{department.deptId}</if>
        </set>
        <where>
            emp_id=#{empId}
        </where>
    </update>
</mapper>

4.配置application.properties

spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/emp_manager?characterEncoding=utf-8&useSSL=false&unicode=true&serverTimezone=UTC


#mybatis
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.snow.entity
mybatis.configuration.map-underscore-to-camel-case=true

#thymeleaf
spring.thymeleaf.mode=HTML5
spring.thymeleaf.cache=false
spring.thymeleaf.encoding=UTF-8

#json时间格式化配置
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

5.Service层

1.departmentService

public interface DeptService {

    /**
     * 获取部门列表
     * @return
     */
    List<Department> getDepartmentList();
}

2.employeeService

public interface EmpService {
    /**
     * 添加员工
     * @param employee
     */
    void addEmployee(Employee employee);


    /**
     * 删除员工
     */
    void deleteEmployeeByEmpId(Integer empId);


    /**
     * 更新员工
     */
    void updateEmployee(Employee employee);

    /**
     * 查询员工列表
     * @return
     */
    Page<Employee> getEmployeeList(int pageNo,int pageSize);

    /**
     * 根据员工ID查询员工信息
     * @param empId
     * @return
     */
    Employee getEmployeeByEmpId(Integer empId);
}

3.Impl实现上面的两个接口,一般都是这样开发的

1.departmentServiceImpl.java

@Service
@Repository
public class DeptServiceImpl implements DeptService {
    @Autowired
    private DepartmentMapper departmentMapper;
    @Override
    public List<Department> getDepartmentList() {
        return departmentMapper.getDepartmentList();
    }
}

2.EmployeeServiceImpl.java

@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private EmployeeMapper employeeMapper;

    @Override
    public void addEmployee(Employee employee) {
        employeeMapper.addEmployee(employee);

    }

    @Override
    public void deleteEmployeeByEmpId(Integer empId) {
        employeeMapper.deleteEmployeeByEmpId(empId);
    }

    @Override
    public void updateEmployee(Employee employee) {
        employeeMapper.updateEmployee(employee);
    }

    @Override
    public Page<Employee> getEmployeeList(int pageNo,int pageSize) {
        Page<Employee> page = new Page<>();
        PageHelper.startPage(pageNo,pageSize);
        List<Employee> employeeList = employeeMapper.getEmployeeList();
        PageInfo<Employee> info = new PageInfo<>(employeeList);
        page.setPage(info.getList());
        page.setPageCount(info.getPages());
        page.setPageNo(info.getPageNum());
        page.setHasNext(info.isHasNextPage());
        page.setHasPre(info.isHasPreviousPage());

        return page;
    }

    @Override
    public Employee getEmployeeByEmpId(Integer empId) {
        return employeeMapper.getEmployeeByEmpId(empId);
    }
}

6.Controller层

EmpController.java

@Controller
public class EmpController {
    @Autowired
    private EmpService empService;
    @Autowired
    private DeptService deptService;


    /*获取所有用户*/
    @GetMapping("/allemp")
    public String allEmpList(Integer pageNo, Integer pageSize, Model model){
        if (pageNo==null){
            pageNo=1;
        }
        if (pageSize==null){
            pageSize=5;
        }
        Page<Employee> employeeList = empService.getEmployeeList(pageNo, pageSize);
        System.out.println(employeeList);
        model.addAttribute("employees",employeeList);

        return "employee_list";
    }
    /*添加页面*/
    @GetMapping("/addEmp")
    public String goAddHtml(Model model){
        List<Department> departmentList = deptService.getDepartmentList();
        model.addAttribute("depts",departmentList);
        return "employee_add";
    }

    /*添加用户*/
    @PostMapping("/insertEmp")
    public String addEmp(Employee employee){
        empService.addEmployee(employee);
        return "redirect:/allemp";
    }

    /*删除用户*/
    @GetMapping("/delemp/{empId}")
    public String delEmpById(@PathVariable("empId") Integer empId){
        empService.deleteEmployeeByEmpId(empId);
        return "redirect:/allemp";
    }
    /*更新用户页面*/
    @GetMapping("/upup")
    public String upEmp(Integer empId,Model model){
        List<Department> departmentList = deptService.getDepartmentList();
        model.addAttribute("departments",departmentList);

        Employee employeeByEmpId = empService.getEmployeeByEmpId(empId);
        model.addAttribute("emps",employeeByEmpId);
        return "employee_update";
    }

    /*更新员工信息*/
    @GetMapping("/upEmp")
    public String upupEmp(Employee employee){
        empService.updateEmployee(employee);
        return "redirect:/allemp";
    }

    /*获取分页数据*/
    @ResponseBody
    @GetMapping("/pagedata")
    public Page<Employee> getPageData(Integer pageNo,Integer pageSize){
        if (pageNo==null){
            pageNo=1;
        }
        if (pageSize==null){
            pageSize=5;
        }
        return empService.getEmployeeList(pageNo,pageSize);
    }
}

7.页面实现的效果

在浏览器输入localhost:8080

 总结:上面是我用Sspringboot 实现的一个小Demo ,适合新手小白入手,熟悉springboot的使用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值