Mybatis是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。是一个基于Java的持久层框架。
特点:
1、简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
2、灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
3、解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
4、提供映射标签,支持对象与数据库的orm字段关系映射。
5、提供对象关系映射标签,支持对象关系组建维护
6、提供xml标签,支持编写动态sql
第一步:创建一个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
项目结构图:
第二步:在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请求。
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 |
识别二维码关注个人微信公众号
本章完结,待续,欢迎转载!
本文说明:该文章属于原创,如需转载,请标明文章转载来源!