統合された春のブートMyBatisの(1)


春ブーツ統合のチュートリアル


アウトライン

MyBatisのは、オープンソースの永続化フレームワークであり、プロジェクトが今では、簡単に言えば、MyBatisのは、効率的な結果セットのマッピングは、まだ柔軟な、このような動的SQLを達成するために、データベースへのJavaアプリケーションへのアクセスを簡素化し、より多くのインターネットを使いますJDBCやHibernateは代替案は、個人がプロジェクトにMyBatisのを使用する傾向があります。この記事では、春のブートプロジェクトに統合MyBatisのプロセスについて説明します。

データを準備します

前節【春ブーツが接続のMySQL]同じデータを使用して、テキストなどのデータがグラフィッククライアントMySQLのワークベンチ生成されたデータを詳細にプロセスを記述するデータの準備を参照しません。あなたはmysqlのコマンドラインクライアントを使用する傾向がある場合は、次の文は、SQLデータベースを作成し、データを挿入することです。

SQL文

mysqlのコマンドラインクライアントは、データベースに接続します。

mysql -h localhost -u root -p

データベースを作成します。

CREATE DATABASE qikegu_demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

SQL文のテーブルを作成します。

CREATE TABLE `qikegu_demo`.`user` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `nickname` VARCHAR(50) NULL COMMENT '昵称',
  `mobile` VARCHAR(20) NULL COMMENT '手机号',
  `password` CHAR(60) NULL COMMENT '密码hash值',
  `role` VARCHAR(100) NULL DEFAULT 'user' COMMENT '角色,角色名以逗号分隔',
  PRIMARY KEY (`id`),
  UNIQUE INDEX `mobile_UNIQUE` (`mobile` ASC))
COMMENT = '用户表';

データのSQL文を挿入します。

INSERT INTO `qikegu_demo`.`user` (`nickname`, `mobile`, `password`) VALUES ('abc1', '13512345678', '123');
INSERT INTO `qikegu_demo`.`user` (`nickname`, `mobile`, `password`) VALUES ('abc2', '13512345677', '123');

プロジェクトを作成します。

春のブートプロジェクトを作成します。

セクションを参照して、春のブートプログラムを作成する方法として明確ウェブ、JDBC、MySQLの、MyBatisのを確認し、コンフィギュレーションに依存して春のブートプログラムのスプリングスタータープロジェクトを作成し、Eclipseを開きます:[春ブーツのHello World(安らかなインタフェース)の例]

画像

pom.xmlファイル

pom.xmlとして自動生成されたコンテンツファイル

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.qikegu</groupId>
    <artifactId>springboot-mybatis-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-mybatis-demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

クラシックプロジェクト構造

以下に示すように、古典的なプロジェクト構造(MVC)を作成し、いくつかのディレクトリを追加します。

画像

SRC /メイン/ javaの/ COM / qikegu /デモ・フォルダには、ディレクトリを追加します。

  • 共通 - 共通コード
  • 設定 - 春のJavaのプロフィール
  • コントローラ - 制御層
  • モデル - オブジェクト層
  • リポジトリ - データベースアクセス層、MyBatisのマッピングクラスを保存
  • サービス - サービス層

src / main / resourcesフォルダは、ディレクトリを追加します。

  • マッパー - MyBatisのSQLマッピングxmlファイル

コンフィギュレーション

application.properties設定

## 服务器端口,如果不配置默认是8080端口
server.port=8096 

## 数据库设置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/qikegu_demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=你的密码

## mybatis配置
# 参数类型的包别名设置
mybatis.typeAliasesPackage=com.qikegu.demo.model
# 指向映射xml文件目录
mybatis.mapperLocations=classpath:mapper/*.xml

データベース構成が記載されていない、参照は不明[MySQLの接続バネブート]であってもよいです。

MyBatisの構成は、typeAliasesPackageを説明:のParameterTypeでのXMLマッピング・ファイルの後にこの値を設定し、パッケージの別名のパラメータの型は、フルパス名を書かれているではないでしょう、のParameterType =「com.qikegu.demo.model.Userは」 "のParameterType =書き込むことができますユーザー」。

@MapperScanコメント

@MapperScan役割は、アプリケーションクラスの前面に、MyBatisのマッピングされたクラスをスキャンするパスを指定することです。

package com.qikegu.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
//指定要扫描的mybatis映射类的路径
@MapperScan("com.qikegu.demo.repository")
public class SpringbootMybatisDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisDemoApplication.class, args);
    }
}

コードを追加します。

私たちは、ユーザによるIDのクエリインターフェイスのユーザー情報を実現します。

以下に示すように、ファイルを追加します。

画像

プロシージャを呼び出します。用户访问 > UserController > UserService > UserMapper.java > UserMapper.xml > 数据库ユーザーオブジェクトに戻ります

以下のリストは、各ファイルの内容は、重要な場所はコメントです

User.java - オブジェクトクラス

package com.qikegu.demo.model;

public class User {
    private long id;
    private String nickname;
    private String mobile;
    
    @JsonProperty(access = Access.WRITE_ONLY) //在输出的Json数据中隐藏密码,只能输入不输出
    private String password;
    
    private String role;
    
    public User(long id, String nickname, String mobile, String password, String role) {
        this.id = id;
        this.nickname = nickname;
        this.mobile = mobile;
        this.password = password;
        this.role = role;
    }

    public User() {
        super();
    }
    
    public String getNickname() {
        return nickname;
    }
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getRole() {
        return role;
    }
    public void setRole(String role) {
        this.role = role;
    }
}

UserService.java - サービス・インターフェース・クラス

package com.qikegu.demo.service;

import com.qikegu.demo.model.User;

public interface UserService {
    
    public User getUserById(long userId);
   
}

UserServiceImpl - サービス・インターフェースの実装クラス

package com.qikegu.demo.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.qikegu.demo.model.User;
import com.qikegu.demo.repository.UserMapper;
import com.qikegu.demo.service.UserService;

@Service("userService")
public class UserServiceImpl implements UserService {

    // 注入mapper类
    @Resource
    private UserMapper userMapper;
    
    @Override
    public User getUserById(long userId) {
        return userMapper.selectByPrimaryKey(userId);
    }
}

UserControllerで - コントロールクラス

package com.qikegu.demo.controller;

import javax.annotation.Resource;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.qikegu.demo.model.User;
import com.qikegu.demo.service.UserService;

@RestController
@EnableAutoConfiguration
@RequestMapping("/user")
public class UserController {
    
    // 注入mapper类
    @Resource
    private UserService userService;
    
    @RequestMapping(value="{id}", method=RequestMethod.GET, produces="application/json")
    public User getUser(@PathVariable long id) throws Exception {
        
        User user = this.userService.getUserById(id);
        
        return user;
    }

}

UserMapper.java - MyBatisのマッピングクラス、データベースアクセス層

package com.qikegu.demo.repository;

import com.qikegu.demo.model.User;

public interface UserMapper {

    // 对应xml映射文件元素的ID
    User selectByPrimaryKey(long id);

}

UserMapper.xml - MyBatisの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.qikegu.demo.repository.UserMapper">
  <resultMap id="BaseResultMap" type="com.qikegu.demo.model.User">
    <constructor>
      <idArg column="id" javaType="_long" jdbcType="BIGINT" />
      <arg column="nickname" javaType="java.lang.String" jdbcType="VARCHAR" />
      <arg column="mobile" javaType="java.lang.String" jdbcType="VARCHAR" />
      <arg column="password" javaType="java.lang.String" jdbcType="CHAR" />
      <arg column="role" javaType="java.lang.String" jdbcType="VARCHAR" />
    </constructor>
  </resultMap>
  
  <sql id="Base_Column_List">
    id, nickname, mobile, password, role
  </sql>
  <select id="selectByPrimaryKey" parameterType="_long" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from user
    where id = #{id,jdbcType=BIGINT}
  </select>
</mapper>

ラン

プロジェクトのコンテキストメニューを選択:として実行 - >春のブートアプリケーションをプログラムを実行するために、ユーザー情報のブラウザアクセス:

画像

概要

この文書では、統合MyBatisの春ブーツのプロセスを説明し、次のように、統合プロセスが要約されます。

  1. MyBatisのは、プロジェクトセットの依存関係を作成するときに頼るチェック
  2. application.propertiesを設定します。
  3. @MapperScanコメントの設定
  4. XMLマッピングファイルとマッピングされたJavaクラスを書きます
  5. マッピング方法やサービスにコールコントローラクラス

テストの後、統合の成功。

完全なコード

おすすめ

転載: www.cnblogs.com/jinbuqi/p/11008881.html