SpringCloud项目搭建(四)

集成持久层框架MyBatis

为什么用MyBatis 不用 Hibernate做持久层框架呢? MyBatis和Hibernate相比,优势在哪里?

  1. 创建数据库时需注意设置UTF-8,mysql 数据库中utf-8是三个字节,支持字符有限。后面5.5.3之后新增了utf8mb4的编码,支持更多字符,例如表情等。在这里插入图片描述
  2. 在链接中建立一个库,这里我建立的库名为** “frist_initializr” ** 由于我的权限是root,所以可以看到所有的库。为了只看到指定的库可以新建立一个数据库用户。
    @localhost是表示只能本机访问
    @%表示可以让外网访问
    在这里插入图片描述在这里插入图片描述
    再代码中需要导入依赖
  <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

同时application.yaml中需要进行数据库配置,以及mybatis配置

mybatis:
  type-aliases-package: com.young.system.domain
  mapper-locations: classpath:mapper/*.xml
spring:
  application:
    name: System
  datasource:
    url: jdbc:mysql://localhost:3306/frist_initializr?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT #配置数据库连接路径
    username: frist_initializr
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver #配置数据库驱动

接下来需要设置启动时解析mapper的路径,上面yaml 中也需要进行配置

@MapperScan("com.young.system.mapper")
public class SystemApplication {
}

在yaml 中设置成 mapper 解析路径为classpath:mapper/*.xml,所以在resouces文件夹下创建mapper
mapper .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.young.system.mapper.TestMapper">
    <select id="list" resultType="com.young.system.domain.Test">
        select * from test
    </select>
</mapper>

在resultType类中设置了bean 所以 在该路径下需要创建一个test表的对象。
同时在namespace中指定了该路径中的类。同时需要在该类中创建一个list方法。

package com.young.system.mapper;

import com.young.system.domain.Test;

import java.util.List;

public interface TestMapper {

   public List<Test> list();
}

服务层来执行这些方法

package com.young.system.service;

import com.young.system.domain.Test;
import com.young.system.mapper.TestMapper;
import org.springframework.stereotype.Service;

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

@Service
public class TestService {

    @Resource
    private TestMapper testMapper;

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

controller层 业务代码

package com.young.system.controller;

import com.young.system.domain.Test;
import com.young.system.service.TestService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

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

@RestController
public class TestController {

    @Resource
    private TestService testService;

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

配置时发现错误

  1. Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
    解决方式:driver-class-name:** com.mysql.cj.jdbc.Driver **
    URL 也需要重新设置
    url: jdbc:mysql://localhost:3306/frist_initializr?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
  2. Cause: org.apache.ibatis.builder.BuilderException: Mapper’s namespace cannot be empty 意思时没有找到mapper的在哪里.于是我在application.yaml 中查找是不是没有设置指定路径,进来发现已经写了
    错误示例:
mybatis:
  mapper-locations:  classpath:/mapper/*.xml

正确示例:

mybatis-plus:
  mapper-locations: classpath*:/mapper/*.xml

3.You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘test’’ at line 1

<?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.young.system.mapper.TestMapper">
    <select id="list" resultType="com.young.system.domain.Test">
        select * from 'test'
    </select>
</mapper>

现在的写法

<?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.young.system.mapper.TestMapper">
    <select id="list" resultType="com.young.system.domain.Test">
        select * from test
    </select>
</mapper>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值