SpringBoot(二)Springboot整合mybatis

基于:【狂神说Java】SpringBoot最新教程IDEA版通俗易懂

1 导入依赖

<!--jdbc-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
	<version>2.4.0</version>
</dependency>

<!-- mybatis-spring-boot-starter -->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.1.3</version>
</dependency>


<!-- druid -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.2.3</version>
</dependency>


<!--mysql-->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>8.0.21</version>
</dependency>

比较重要的就是上面四个:MySQLdruidjdbcmybatis

2 配置yml

# 数据库基本配置
spring:
  datasource:
    username: root
    password: "123456"
    url: jdbc:mysql://127.0.0.1:3306/datasets?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

    #   数据源其他配置
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

# mybatis配置
mybatis:
  type-aliases-package: xyz.deepmez.pojo # 别名
  mapper-locations: classpath:mybatis/mapper/*.xml # mapper文件注册

这里面的配置包括数据源的配置、Druid的相关配置、mybatis相关配置;

3 编写pojo实体类

public class Iris {
    private int dataIndex;
    private double sepalLength;
    private double sepalWidth;
    private double petalLength;
    private double petalWidth;
    private String label;
}

还包括相关的getter、setter、有参无参构造方法。

4 在Mapper包下编写接口

@Mapper
public interface IrisMapper {
    List<Iris> getAllIris();
    Iris getIrisById(int id);
}

注解@Mapper的作用是自动生成一个实现类,也就是之前SQLSession那一套,然后生成一个bean交给spring管理,可以交给Service注入;

5 编写mapper.xml写sql语句

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace和接口匹配-->
<mapper namespace="xyz.deepmez.mapper.IrisMapper">
    <select id="getAllIris" resultType="Iris">
        SELECT * FROM iris
    </select>

    <select id="getIrisById" resultType="Iris" parameterType="int">
        SELECT * FROM iris where dataIndex=#{id}
    </select>

</mapper>

注意:这个xml文件最好写在:classpath:mybatis/mapper/,然后在配置文件中配置:mapper-locations: classpath:mybatis/mapper/*.xml,我个人还是比较推崇不使用注解来写sql的风格,因为有时候需要有动态sql、一对多、多对一的情况,最好还是单独编写业务;

6 Controller层

本来应该是Service层去调用,这里方便演示,直接交给Controller

@RestController
public class HelloController {
    //自动注入,IrisMapper的getMapper
    @Autowired
    IrisMapper irisMapper;

    @RequestMapping("/data")
    @ResponseBody
    public List<Iris> hello() {
        List<Iris> list = irisMapper.getAllIris();
        System.out.println(list);

        return list;
    }
}
  • @RestController:SpringMVC注解,直接返回值,不用交给视图解析器,并且注册为bean交给Spring管理;
  • @Autowired:把@Mapper的实现类自动注入到这里,可以直接使用实现接口的方法;
  • @RequestMapping("/data"):访问的路由;
  • @ResponseBody:和@RestController功能一样,直接返回数据,只是作用在方法上面;

7 测试

运行访问:http://localhost:8080/data前端看到数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值