SpringCloudプロジェクトの構築(4)

統合された永続層フレームワークMyBatis

永続層フレームワークとしてHibernateの代わりにMyBatisを使用するのはなぜですか?Hibernateと比較して、MyBatisの利点は何ですか?

  1. データベースを作成するときは、UTF-8の設定に注意する必要があります。mysqlデータベースのUTF-8は3バイトであり、サポートされる文字は制限されています。utf8mb4のエンコーディングは、5.5.3の後に追加されました。これは、絵文字など、より多くの文字をサポートします。ここに画像の説明を挿入
  2. リンクにライブラリを作成します。ここで作成したライブラリの名前は** "frist_initializr" **権限がルートであるため、すべてのライブラリを表示できます。指定したライブラリのみを表示するために、新しいデータベースユーザーを作成できます。
    @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 #配置数据库驱动

次に、起動時にマッパーを解析するためのパスを設定する必要があります。上記のyamlも構成する必要があります。

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

yamlのマッパー解析パスをclasspath:mapper / *
。xmlに設定して、リソースフォルダーにマッパー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>

BeanはresultTypeクラスに設定されるため、テストテーブルのオブジェクトをこのパスの下に作成する必要があります。
同時に、パス内のクラスは名前空間で指定されます。同時に、このクラスでリストメソッドを作成する必要があります。

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();
    }
}

コントローラ層のビジネスコード

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. クラスcom.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver 'をロードしています。ドライバは、ドライバクラスの自動SPI経由で登録と手動ロードは、一般的に不要である。
    解决方式:ドライバー・クラス名:** com.mysql.cj.jdbc.Driver **
    URL也需要重新设置
    URLます。jdbc: mysql:// localhost:3306 / frist_initializr?useUnicode = true&characterEncoding = utf-8&useSSL = false&serverTimezone = GMT
  2. 原因:org.apache.ibatis.builder.BuilderException:マッパーの名前空間は、マッパーが見つからないことを空に意味することはできませんので、私は指定されたパスが設定されていないかどうかを確認するためにapplication.yamlで検索し、入って来たとことがわかった。エラー例が書かれています
mybatis:
  mapper-locations:  classpath:/mapper/*.xml

正しい例:

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

3.SQL構文にエラーがあります。1行目の「test」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

<?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>

おすすめ

転載: blog.csdn.net/weixin_42789301/article/details/107267248