寻找写代码感觉(四)之数据库准备及集成持久层框架Mybatis

一、常见的持久层框架

  • Mybatis (半自动,就是需要自己手动写sql)
  • hibernate(全自动,不需要自己手动写sql)

二、数据库准备

  • 每个数据库配置单独的用户,专库专用
  • IDEA配置数据库连接
  • 增加数据库脚本
drop table if exists test;


CREATE TABLE `test` (
                                `id` bigint(20) NOT NULL AUTO_INCREMENT,
                                `name` varchar(50) DEFAULT NULL COMMENT '用户名',
                                `password` varchar(50) DEFAULT NULL COMMENT '密码',
                                PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='测试';

三、集成Mybatis

1、引入依赖

        <!-- 集成mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>

2、配置数据源

application.yml

# 增加数据库连接
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/wiki?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    username: wiki
    password: wiki

添加数据源映射
resources下创建一个名为mapper的文件夹,并创建mapper文件
TestMapper.xml示例如下:

<?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" >
<mapper namespace="com.rongrong.wiki.mapper.TestMapper" >

    <select id="list" resultType="com.rongrong.wiki.domain.Test">
        select `id`, `name`, `password` from `test`
    </select>

</mapper>

3、使用Mybatis

配置mybatis所有Mapper.xml所在的路径

# 配置mybatis所有Mapper.xml所在的路径
mybatis:
  mapper-locations: classpath:/mapper/**/*.xml

4、创建映射实体及实现映射

创建一个名为com.rongrong.wiki.domain的包,并创建一个名为Test的实体类,具体代码如下:

package com.rongrong.wiki.domain;

import lombok.Data;

/**
 * @author rongrong
 * @version 1.0
 * @description
 * @date 2021/10/7 18:22
 */
@Data
public class Test {
    private Integer id;
    private String name;
    private String password;
}

创建一个接口TestMapper,示例代码如下:

package com.rongrong.wiki.mapper;

import com.rongrong.wiki.domain.Test;

import java.util.List;

/**
 * @author rongrong
 * @version 1.0
 * @description
 * @date 2021/10/7 19:13
 */
public interface TestMapper {
    public List<Test> list();
}

创建一个Service,主要用于写逻辑,示例代码如下:

package com.rongrong.wiki.service;

import com.rongrong.wiki.domain.Test;
import com.rongrong.wiki.mapper.TestMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author rongrong
 * @version 1.0
 * @description
 * @date 2021/10/7 21:09
 */
@Service
public class TestService {

    @Resource
    private TestMapper testMapper;

    public List<Test> list() {
        return testMapper.list();
    }
}

5、编写查询接口

示例代码如下:

@GetMapping("/test/list")
public List<Test> list() {
    return testService.list();
}

6、使用@MapperScan扫描所有的Mapper接口

在启动类处添加注解

四、测试

访问接口返回如下:

五、接口和XML的命名

  • 使用@Service@RestController注解,将Service类或Controller类交给Spring来管理了
  • 使用@Resource@Autowire(使用会报错,提示没有bean,我用的是jdk自带的前者)将一个类注入到另一个类中
posted @ 2021-10-08 12:56  久曲健  阅读(112)  评论(0编辑  收藏  举报