第十章:SpringBoot2.3.0 Mybatis+Mysql案例

一)Mybatis简介

Mybatis是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。是一个基于Java的持久层框架。

 

特点:

1、简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

2、灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

3、解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

4、提供映射标签,支持对象与数据库的orm字段关系映射。

5、提供对象关系映射标签,支持对象关系组建维护

6、提供xml标签,支持编写动态sql

 

二)Mybatis+Mysql案例

第一步:创建一个Maven项目,并导入SpringBoot的Jar,Mybatis的Jar和Mysql的Jar。

pom.xml文件:



    4.0.0

    org.example
    mybatis_springboot
    1.0-SNAPSHOT
    jar

    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.0.RELEASE
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.1.3
        

        
            mysql
            mysql-connector-java
            8.0.20
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

项目结构图:

第十章:SpringBoot2.3.0 Mybatis+Mysql案例_第1张图片

 

第二步:在Mysql数据库创建一个表,脚本如下

CREATE TABLE `tab_employee` (
  `emp_id` int(11) unsigned NOT NULL,
  `emp_name` varchar(100) DEFAULT NULL,
  `emp_no` varchar(100) DEFAULT NULL,
  `create_date` date DEFAULT NULL,
  PRIMARY KEY (`emp_id`)
);

select * from tab_employee;

 

第三步:创建一个Employee实体类和对应Dao层接口,并在对应的XML中添加SQL

Employee.java实体类:

package com.oysept.bean;

import java.util.Date;

/**
 * 员工表
 * @author ouyangjun
 */
public class Employee {

    private Long empID;
    private String empName;
    private String empNO;
    private Date createDate;

    public Long getEmpID() {return empID;}
    public void setEmpID(Long empID) {this.empID = empID;}

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

    public String getEmpNO() {return empNO;}
    public void setEmpNO(String empNO) {this.empNO = empNO;}

    public Date getCreateDate() {return createDate;}
    public void setCreateDate(Date createDate) {this.createDate = createDate;}
}

 

EmployeeMapper.java接口类:

package com.oysept.mapper;

import com.oysept.bean.Employee;

import java.util.List;

public interface EmployeeMapper {

    int addEmployee(Employee entity);

    List listEmployee();

    Employee findByEmpID(Integer empID);
}

 

EmployeeMapper.xml内容:该XML文件是在src/main/java/resources下,创建了一个mapper文件夹,然后再创建的XML文件。

resultMap标签:数据库字段和JavaBean属性映射关系。





    
        
        
        
        
    

    
    
        insert into tab_employee(emp_ID, emp_Name, emp_NO, create_Date)
        values(
        #{empID,jdbcType=INTEGER},
        #{empName,jdbcType=VARCHAR},
        #{empNO,jdbcType=VARCHAR},
        #{createDate,jdbcType=DATE})
    

    

    

    

 

第四步:创建一个MybatisController测试Controller类

package com.oysept.controller;

import com.oysept.bean.Employee;
import com.oysept.mapper.EmployeeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;
import java.util.List;

@RestController
@RequestMapping(value="/employee")
public class MybatisController {

    @Autowired
    private EmployeeMapper employeeMapper;

    /**
     * 新增
     * 访问地址: http://localhost:8080/employee/addEmployee
     * @return
     */
    @RequestMapping(value="/addEmployee", method = RequestMethod.GET)
    public Employee addEmployee(){
        Employee entity = new Employee();
        entity.setEmpID(666666L);
        entity.setEmpName("oysept");
        entity.setEmpNO("NO666");
        entity.setCreateDate(new Date());

        employeeMapper.addEmployee(entity);
        return entity;
    }

    /**
     * 查询所有员工信息
     * 访问地址: http://localhost:8080/employee/listEmployee
     * @return
     */
    @RequestMapping(value="/listEmployee", method = RequestMethod.GET)
    public List listEmployee() {
        List list = employeeMapper.listEmployee();
        return list;
    }

    /**
     * 根据empID获取员工信息
     * 访问地址: http://localhost:8080/employee/findByEmpID/666666
     * @param empID
     * @return
     */
    @RequestMapping(value="/findByEmpID/{empID}", method = RequestMethod.GET)
    public Employee findByEmpID(@PathVariable("empID") Integer empID) {
        Employee entity = employeeMapper.findByEmpID(empID);
        return entity;
    }
}

 

第五步:添加SpringBoot启动类,和增加Mysql数据库连接配置

MybatisApplication.java启动类:

@MapperScan:该注解指定需要扫描的Mybatis Mapper文件路径

package com.oysept;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.oysept.mapper")
public class MybatisApplication {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(MybatisApplication.class);
        app.run(args);
    }
}

application.yml文件:

mybatis.type-aliases-package:表示实体类存放的位置。

mybatis.mapper-locations:表示Mapper文件存放的位置。

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/oysept?serverTimezone=GMT&useUnicode=true&characterEncoding=utf8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  type-aliases-package: com.oysept.bean
  mapper-locations: classpath*:mapper/*.xml

启动之后,在浏览器输入具体的地址,即可查看接口请求效果,为方便测试,都是用的GET请求。

 

三)Mybatis中jdbcType和javaType的对应关系

jdbcType javaType
VARCHAR String
CHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMAL java.math.BigDecimal
BIT boolean
BOOLEAN boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT double
DOUBLE double
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
CLOB Clob
BLOB Blob

 

识别二维码关注个人微信公众号

本章完结,待续,欢迎转载!
 
本文说明:该文章属于原创,如需转载,请标明文章转载来源!

你可能感兴趣的:(SpringBoot2.3.0)