寻找写代码感觉(四)之数据库准备及集成持久层框架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 @   久曲健  阅读(122)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2019-10-08 appium 使用name 定位报错 Locator Strategy 'name' is not supported for this session【appium-desktop】
点击右上角即可分享
微信分享提示