SpringBoot整合MyBatis

举报
yd_221104950 发表于 2020/12/02 22:47:52 2020/12/02
【摘要】 1.环境配置 软件名称版本备注idea2019 linux 社区版下载Maven3.6.0idea要设置使用安装的这个,否则idea会用自带的mavenSpringBoot2.2.6MySQL Workbench8.0数据库的可视化操作工具jdk1.8MyBatis2.1.1MySQL8.0.20教程 2.在数据库中创建MyDB库和在Person表 利用MySQL ...

1.环境配置

软件名称 版本 备注
idea 2019 linux 社区版 下载
Maven 3.6.0 idea要设置使用安装的这个,否则idea会用自带的maven
SpringBoot 2.2.6
MySQL Workbench 8.0 数据库的可视化操作工具
jdk 1.8
MyBatis 2.1.1
MySQL 8.0.20 教程

2.在数据库中创建MyDB库和在Person表

  • 利用MySQL Workbench创建MyDB库:
    在这里插入图片描述
  • 创建person表
    在这里插入图片描述

3.新建Springboot项目

参考:
《纯手工创建SpringBoot项目》

3.1.项目目录结构

这个是一个可运行的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


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

3.2.项目配置信息

3.2.1. pom.xml文件添加必要依赖

我们pom.xml至少要添加如下这些依赖:

  • SpringBoot开发web项目的起步依赖;
  • MySQL的jdbc驱动;
  • MyBatis框架的依赖。

为了方便测试,我还加了如下框架:

  • 日志框架;
  • maven插件;
  • jetty容器。

完整pom.xml内容如下:

<?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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72

3.2.2. application.yml配置数据库

通过pom.xml我们已经将工具或依整包含进项目,在通过MyBatis使用MySQL数据库前必须做一些配置:
配置文件中很必要的配置包括:

  • 数据库URL
  • 用户名及密码
  • 驱动
spring:
  datasource: # 基本配置 url: jdbc:mysql://127.0.0.1:3306/MyDB username: root password: 1qaz@4321 driver-class-name: com.mysql.jdbc.Driver # 数据源其他配置 initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 30000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true # 配置监控统计的filters,去掉后监控界面sql无法统计,wall用于防火墙 filters: stat,wall,slf4j maxPoolPreparedStatementPerConnectionSize: 20 useGlobalDataSourceStat: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

3.3.项目Java源码

3.3.1.创建实体类Person

package com.wong.mybatis.bean;

/**
 * 人员类
 */
public class Person { private int id; private String name; private int age; //TODO getter和setter方法 @Override public String toString() { return "\""+this.id+"="+this.name+"="+this.age+"\""; }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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;

@Mapper
public 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();
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

3.3.3.创建服务

根据面向接口编程的原则,我们先定义一个接口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();
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

再创建服务的实现类:可以在此类中实现复杂的业务
在实现类使用@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;

@Service
public class PersonServiceImpl implements PersonService{ @Autowired private PersonMapper personMapper; @Override public int insertPerson(Person person) { return personMapper.insert(person); } @Override public int deletePersonById(Integer id) { return personMapper.deleteByPrimaryKey(id); } @Override public int updatePersonById(Person person) { return personMapper.updateByPrimaryKey(person); } @Override public Person selectPersonById(Integer id) { return personMapper.selectByPrimaryKey(id); } @Override public List<Person> selectAllPerson() { return personMapper.selectAllPerson(); }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

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;

@RestController
public class PersonController {

	// 通过@Autowired将PersonService的实例注入进来,其实就是PersonServiceImpl实例 @Autowired private 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()+""; }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

4.运行项目并测试

4.1.运行项目

~/Desktop/MyBatisDemo$ mvn clean spring-boot:run

  
 
  • 1

4.2.测试

添加记录:
在这里插入图片描述
查询记录:
在这里插入图片描述
Demo下载

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/106013794

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。