本节大纲:
(1)MyBatis介绍
(2)注解思路
(3)新建project以及添加依赖包
(4)创建启动类App.java
(5)编写实体类Demo
(6)编写映射接口DemoMapper
(7)编写service类DemoService
(8)编写控制类DemoController
(9)配置数据库连接池
(10)测试
(1)MyBatis介绍
来源:MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
介绍:MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
(2)注解思路
在Spring Boot中使用注解集成MyBatis的话,那么核心的文件就是实体类和SQL的映射类,比如DemoMapper,在此类当中就是方法和对应的注解sql语句,那么要怎么能够识别到DemoMapper类呢,在Spring Boot中就特别的简单,在启动类App中加入一个注解@MapperScan(指定Mapper包路径)。
(3)新建project以及添加依赖包
新建工程取名为spring-boot-mybatis。
在pom.xml文件中添加依赖包:
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.kfit</groupId>
- <artifactId>spring-boot-mybatis</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>spring-boot-mybatis</name>
- <url>http://maven.apache.org</url>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <!-- spring boot parent节点,引入这个之后,在下面和spring boot相关的就不需要引入版本了; -->
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>1.4.1.RELEASE</version>
- </parent>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <!-- web支持: 1、web mvc; 2、restful; 3、jackjson支持; 4、aop ........ -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <!-- mysql 数据库驱动. -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- </dependency>
- <!-- spring-boot mybatis依赖:
- 请不要使用1.0.0版本,因为还不支持拦截器插件,
- -->
- <dependency>
- <groupId>org.mybatis.spring.boot</groupId>
- <artifactId>mybatis-spring-boot-starter</artifactId>
- <version>1.3.0</version>
- </dependency>
- </dependencies>
- </project>
在这里主要引入Spring Boot的相关的依赖包,MySQL数据库驱动,spring boot mybatis依赖包。这里需要注意版本号,1.0.0的版本还不支持拦截器插件。
(4)编写控制类DemoController
- package com.kfit.demo.controller;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import com.kfit.demo.bean.Demo;
- import com.kfit.demo.service.DemoService;
- @RestController
- public class DemoController {
- @Autowired
- private DemoService demoService;
- @RequestMapping("/save")
- public Demo save(){
- Demo demo = new Demo();
- demo.setName("张三");
- demoService.save(demo);
- return demo;
- }
- }
(5)编写service类DemoService
- package com.kfit.demo.service;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import com.kfit.demo.bean.Demo;
- import com.kfit.demo.mapper.DemoMapper;
- @Service
- public class DemoService {
- @Autowired
- private DemoMapper demoMapper;
- @Transactional//添加事务.
- public void save(Demo demo){
- demoMapper.save(demo);
- }
- }
(6)编写映射接口DemoMapper
这个类就是对应的SQL注解:
- package com.kfit.demo.mapper;
- import org.apache.ibatis.annotations.Insert;
- import com.kfit.demo.bean.Demo;
- public interface DemoMapper {
- @Insert("insert into Demo(name) values(#{name})")
- public void save(Demo demo);
- }
注意这个类是interface而不是class。
(7)编写实体类Demo
- package com.kfit.demo.bean;
- public class Demo {
- private int id;
- private String name;
- public int getId() {
- returnid;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
(8)创建启动类App.java
- package com.kfit;
- import org.mybatis.spring.annotation.MapperScan;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- @SpringBootApplication
- @MapperScan("com.kfit.*.mapper")
- public class App {
- public static void main(String[] args) {
- SpringApplication.run(App.class, args);
- }
- }
(9)配置数据库连接池
在application.properties中配置MySQL数据库连接:
Properties代码
- ########################################################
- ###datasource -- mysql的数据库配置.
- ########################################################
- spring.datasource.url = jdbc:mysql://localhost:3306/test
- spring.datasource.username = root
- spring.datasource.password = root
- spring.datasource.driverClassName = com.mysql.jdbc.Driver
- spring.datasource.max-active=20
- spring.datasource.max-idle=8
- spring.datasource.min-idle=8
- spring.datasource.initial-size=10
(10)测试
在访问之前需要注意:
(1)确保创建了数据库test;
(2)确保创建了表Demo,建表语句如下:
- CREATE TABLE demo (
- id int NOT NULL AUTO_INCREMENT ,
- name varchar(100) NULL ,
- PRIMARY KEY (id)
- );
访问之后,在浏览器端会看到数据:
{"id":0,"name":"张三"}