1. 环境配置

| 软件名称 | 版本 | 备注 |
| idea | 2019 linux 社区版 | 下载(https://www.jetbrains.com/idea/download/#section=linux) |
| Maven | 3.6.0 | idea要设置使用安装的这个,否则idea会用自带的maven |
| SpringBoo | 2.2.6 | |
| MySQL Workbench | 8.0 | 数据库的可视化操作工具 |
| jdk | 1.8 | |
| MyBatis | 2.1.1 | |
| MySQL | 8.0.20 | 教程(https://blog.csdn.net/weixin_40763897/article/details/105949885) |
2. 在数据库中创建MyDB库和在Person表

●利用MySQL Workbench创建MyDB库:

●创建person表

3. 新建Springboot项目

参考:
《纯手工创建SpringBoot项目》(https://blog.csdn.net/weixin_40763897/article/details/105081785)
这个是一个可运行的MyBatis Demo的结构。接下来,我们会把每个文件的创建和作用都作详细说明。
~/Desktop/MyBatisDemo$ tree -L 8.├── pom.xml└── src└── main├── java│ └── com│ └── wong│ ├── MainApplication.java│ ├── controller│ │ └── PersonController.java│ └── mybatis│ ├── bean│ │ └── Person.java│ ├── mapper│ │ └── PersonMapper.java│ └── service│ ├── PersonServiceImpl.java│ └── PersonService.java└── resources└── config└── application.yml

3.2.1. pom.xml文件添加必要依赖
我们pom.xml至少要添加如下这些依赖:
● SpringBoot开发web项目的起步依赖;
● MySQL的jdbc驱动;
● MyBatis框架的依赖。
为了方便测试,我还加了如下框架:
● 日志框架;
● maven插件;
● jetty容器。
<?xml version="1.0" encoding="UTF-8"?><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.wong</groupId><artifactId>GroceryDemo</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><properties><java.version>1.8</java.version></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.6.RELEASE</version><relativePath/></parent><dependencies><!--springboot开发web项目的起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 去掉内嵌tomcat --><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency><!--mysql的jdbc驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--MyBatis整合到springboot项目--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.1</version></dependency><!--日志框架--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></dependency><!--jetty容器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency></dependencies><build><finalName>Demo</finalName><plugins><!--maven插件--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

3.2.2. application.yml配置数据库
通过pom.xml我们已经将工具或依整包含进项目,在通过MyBatis使用MySQL数据库前必须做一些配置:
配置文件中很必要的配置包括:
● 数据库URL
● 用户名及密码
● 驱动
spring:datasource:# 基本配置url: jdbc:mysql://127.0.0.1:3306/MyDBusername: rootpassword: 1qaz@4321driver-class-name: com.mysql.jdbc.Driver# 数据源其他配置initialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 30000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: true# 配置监控统计的filters,去掉后监控界面sql无法统计,wall用于防火墙filters: stat,wall,slf4jmaxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: trueconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500


3.3.1.创建实体类Person
package com.wong.mybatis.bean;/*** 人员类*/public class Person {private int id;private String name;private int age;//TODO getter和setter方法@Overridepublic String toString() {return "\""+this.id+"="+this.name+"="+this.age+"\"";}}

3.3.2.创建实体类映射器
映射器是一个接口,要使用其成为映射器必须在加上@Mapper注解,标注的映射器将交给Spring容器管理,Spring会自动创建映射器并放入Spring容器中。要使用这个映射器只需要使用@Autowired注解将Spring容器中的实例注入到本地变量中即可。本demo是使用注解的方式来使用MyBatis的,可以将其转换成使用xml的方式。
package com.wong.mybatis.mapper;import com.wong.mybatis.bean.Person;import org.apache.ibatis.annotations.*;import java.util.List;@Mapperpublic interface PersonMapper {// 增加@Insert("insert into person(id,name,age) values(#{id},#{name},#{age})")int insert(Person person);// 删除@Delete("delete from person where id = #{id}")int deleteByPrimaryKey(Integer id);// 修改@Update("update person set name = #{name},age = #{age} where id = #{id}")int updateByPrimaryKey(Person person);// 查询@Select("select id,name,age from person where id=#{id}")Person selectByPrimaryKey(Integer id);@Select("select id,name,age from person")List<Person> selectAllPerson();}

根据面向接口编程的原则,我们先定义一个接口PersonService:

package com.wong.mybatis.service;import com.wong.mybatis.bean.Person;import java.util.List;public interface PersonService {// 增加int insertPerson(Person person);// 删除int deletePersonById(Integer id);// 修改int updatePersonById(Person person);// 查询Person selectPersonById(Integer id);List<Person> selectAllPerson();}

再创建服务的实现类:可以在此类中实现复杂的业务
在实现类使用@Service注解,标注的实现类将交给Spring容器管理,spring容器会为其创建对象。可以使用@Autowired将Spring容器中的对象注入到本地变量。
@Autowired注解是用来修饰变量的,写在变量上面,并且由系统底层代理创建这个变量的实例,并注入到这个类中,就不用我们自己手动去创建对象。
package com.wong.mybatis.service;import com.wong.mybatis.bean.Person;import com.wong.mybatis.mapper.PersonMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class PersonServiceImpl implements PersonService{@Autowiredprivate PersonMapper personMapper;@Overridepublic int insertPerson(Person person) {return personMapper.insert(person);}@Overridepublic int deletePersonById(Integer id) {return personMapper.deleteByPrimaryKey(id);}@Overridepublic int updatePersonById(Person person) {return personMapper.updateByPrimaryKey(person);}@Overridepublic Person selectPersonById(Integer id) {return personMapper.selectByPrimaryKey(id);}@Overridepublic List<Person> selectAllPerson() {return personMapper.selectAllPerson();}}

3.3.4.创建Controller使用服务
package com.wong.controller;import com.wong.mybatis.bean.Person;import com.wong.mybatis.service.PersonService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestControllerpublic class PersonController {// 通过@Autowired将PersonService的实例注入进来,其实就是PersonServiceImpl实例@Autowiredprivate PersonService personService;// add@RequestMapping(value = "/add")public String addStudents(){Person student = new Person();student.setName("Tom");student.setAge(12);int rs = personService.insertPerson(student);return "插入结果:"+rs;}// select@RequestMapping(value = "/findAll")public String findAllStudents(){List<Person> students = personService.selectAllPerson();students.stream().forEach(System.out::println);return students.toString()+"";}}

4. 运行项目并测试

~/Desktop/MyBatisDemo$ mvn clean spring-boot:run
添加记录:

查询记录:

Demo下载
(https://github.com/wongkyunban/MyBatisDemo)








