SpringBoot学习---第四篇:整合MyBatis

7 篇文章 1 订阅
1 篇文章 0 订阅

现在业界互联网流行的数据操作层框架 Mybatis,下面详解下 Springboot 如何整合 Mybatis ,这边没有使用 Mybatis Annotation 这种,是使用 xml 配置 SQL。

1 导入依赖

使用spring boot 的starter pom,需要导入 mybatis-spring-boot-starter 和 数据库连接相关的配置。

这里采用的是阿里巴巴的druid数据连接池。

pom.xml:

<dependencies>
	<!--mysql-->
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<scope>runtime</scope>
	</dependency>
	
    <!--mybatis-->
	<dependency>
		<groupId>org.mybatis.spring.boot</groupId>
		<artifactId>mybatis-spring-boot-starter</artifactId>
		<version>1.3.2</version>
	</dependency>

	<!-- Druid连接池包 -->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid</artifactId>
		<version>1.0.20</version>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>

		<!-- mybatis generator 自动生成代码插件 -->
		<plugin>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-maven-plugin</artifactId>
			<version>1.3.2</version>
			<configuration>
				<overwrite>true</overwrite>
				<verbose>true</verbose>
			</configuration>
		</plugin>
	</plugins>
</build>

2 配置文件

项目不使用application.properties文件 而使用更加简洁的application.yml文件: 
将原有的resource文件夹下的application.properties文件删除,创建一个新的application.yml配置文件, 
文件的内容如下:

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
# 下面为连接池的补充设置,应用到上面所有数据源中
 # 初始化大小,最小,最大
    dbcp2:
      initial-size: 1  # 初始化大小
      max-idle: 20     # 最大
      min-idle: 1      # 最小
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000 
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000 
      validation-query: select 'x'
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      pool-prepared-statements: true
      max-open-prepared-statements: 20
mybatis:
  #注意:一定要对应mapper映射xml文件的所在路径
  mapper-locations: classpath:mapper/*.xml
  # 注意:对应实体类的路径
  type-aliases-package: com.example.demo.model

3  创建数据库与实体类

3.1 首先创建user表

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8

3.2 使用mybatis generator 自动生成代码

参考方法:https://blog.csdn.net/cllaure/article/details/81483858

最后生成的文件以及结构:

 

4  测试

4.1 在启动类中,加入注解 @MapperScan,这个对应了项目中mapper(dao)所对应的包路径。

package com.example.demo;

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

@SpringBootApplication
@MapperScan("com.example.demo.dao")//将项目中对应的mapper类的路径加进来就可以了
public class SpringbootMybatisDruidApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootMybatisDruidApplication.class, args);
	}
}

4.2 测试Controller

package com.example.demo.controller;

import com.example.demo.model.User;
import com.example.demo.service.UserService;
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.RestController;

@RestController
@RequestMapping(value = "/user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping(value = "/addUser")
    public int addUser(User user){
        return userService.addUser(user);
    }

    @RequestMapping(value = "/getUser/{id}")
    public User getUser(@PathVariable Integer id){
        return userService.getUser(id);
    }
}
  • 4.3 测试service
package com.example.demo.service;

import com.example.demo.model.User;

public interface UserService {
    int addUser(User user);

    User getUser(Integer id);
}
package com.example.demo.service.impl;

import com.example.demo.dao.UserMapper;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService{
    @Autowired
    private UserMapper mapper;


    @Override
    public int addUser(User user) {
        return mapper.insert(user);
    }

    @Override
    public User getUser(Integer id) {
        return mapper.selectByPrimaryKey(id);
    }
}
  • 4.4 在postman测试工具中输入localhost:8080/user/addUser

我们可以看到,新增已经成功了。

其余类似,这里不做演示。

5  参考

Spring boot Mybatis 整合(完整版)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值