Spring Boot usa anotações para integrar MyBatis

1. Preparação de dados

Criar banco de dados

CREATE DATABASE springbootdata DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Crie a tabela t_article e insira os dados relacionados

Copiar código

CREATE TABLE `t_article` (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '文章id',
  `title` varchar(200) DEFAULT NULL COMMENT '文章标题',
  `content` longtext COMMENT '文章内容',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

INSERT INTO `t_article` VALUES ('1', 'Introduction to Spring Boot Basics', 'Da entrada à explicação proficiente ...');
INSERT INTO` t_article` VALUES ('2', 'Introduction to Spring Cloud Basics', 'Do iniciante à explicação proficiente ...');

Copiar código

Crie a tabela t_comment e insira os dados relacionados

Copiar código

  CREATE TABLE `t_comment` (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '评论id',
  `content` longtext COMMENT '评论内容',
  `author` varchar(200) DEFAULT NULL COMMENT '评论作者',
  `a_id` int(20) DEFAULT NULL COMMENT '关联的文章id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

INSERT INTO `t_comment` VALUES ('1', 'Muito completo e detalhado', '
Running snail', '1'); INSERT INTO` t_comment` VALUES ('2', 'Like one', 'tom', '1 ');
INSERT INTO `t_comment` VALUES (' 3 ',' very Detailed ',' kitty ',' 1 ');
INSERT INTO` t_comment` VALUES (' 4 ',' very good, very Detailed ',' Zhang San ',' 1 ');
INSERT INTO `t_comment` VALUES (' 5 ',' Very good ',' Zhang Yang ',' 2 ');

Copiar código

Dois, crie um projeto

Estrutura geral do projeto

Apresentar o iniciador de dependência MySQL e MyBatis

Copiar código

    
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.13</version>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>

Copiar código

Escreva o artigo e o comentário das classes de entidade

Copiar código

package com.uos.databases.domain;

/**
 * 评论实体类
 */
public class Comment {
    private Integer id;
    private String content;
    private String author;
    private Integer aId;

    @Override
    public String toString() {
        return "Comment{" +
                "id=" + id +
                ", content='" + content + '\'' +
                ", author='" + author + '\'' +
                ", aId=" + aId +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public Integer getaId() {
        return aId;
    }

    public void setaId(Integer aId) {
        this.aId = aId;
    }
}

Copiar código

Copiar código

package com.uos.databases.domain;

import java.util.List;

/**
 * 文章类
 */
public class Article {
    private Integer id;
    private String title;
    private String content;
    private List<Comment> commentList;

    @Override
    public String toString() {
        return "Article{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", content='" + content + '\'' +
                ", commentList=" + commentList +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public List<Comment> getCommentList() {
        return commentList;
    }

    public void setCommentList(List<Comment> commentList) {
        this.commentList = commentList;
    }
}

Copiar código

application.yml

Copiar código

spring:
  datasource:
    url: jdbc:mysql://192.168.41.132:3306/springbootdata?serverTimezone=UTC
    username: root
    password: 1
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 20
      min-idle: 10
      max-active: 100
      driver: com.mysql.jdbc.Driver

Copiar código

Classe de configuração DataSourceConfig

Copiar código

package com.uos.databases.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;

@Configuration
public class DataSourceConfig {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource getDruid(){
        return new DruidDataSource();
    }
}

Copiar código

Terceiro, use anotações para integrar MyBatis

Classe ArticleMapper

Copiar código

package com.uos.databases.mapper;


import com.uos.databases.domain.Article;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;


@Mapper
public interface ArticleMapper {
    @Select("SELECT * FROM t_article WHERE id =#{id}")
    public Article selectArticle(Integer id);

    public int updateArticle(Article article);

}

Copiar código

Classe CommentMapper

Copiar código

package com.uos.databases.mapper;


import com.uos.databases.domain.Comment;
import org.apache.ibatis.annotations.*;


@Mapper
public interface CommentMapper {
    @Select("SELECT * FROM t_comment WHERE id =#{id}")
    public Comment findById(Integer id);

    @Insert("INSERT INTO t_comment(content,author,a_id) " +
            "values (#{content},#{author},#{aId})")
    public int insertComment(Comment comment);

    @Update("UPDATE t_comment SET content=#{content} WHERE id=#{id}")
    public int updateComment(Comment comment);

    @Delete("DELETE FROM t_comment WHERE id=#{id}")
    public int deleteComment(Integer id);

}

Copiar código

Quatro, teste

Classe de teste MybatisApplicationTests

Copiar código

@SpringBootTest
class MybatisApplicationTests {

    @Autowired
    private CommentMapper commentMapper;

    @Test
    public void selectComment() {
        Comment comment = commentMapper.findById(2);
        System.out.println(comment);
    }

    @Autowired
    private ArticleMapper articleMapper;

    @Test
    public void selectArticle() {
        Article article = articleMapper.selectArticle(2);
        System.out.println(article);
    }


    @Test
    void contextLoads() {
    }

}

Copiar código


#Open camel case name correspondente ao mapeamento mybatis.configuration.map-underscore-to-camel-case = true

 

 * O método de nomenclatura camel case é usado na classe de entidade Comment para projetar o campo a_id na tabela t_comment como o atributo aId, portanto, não pode ser mapeado para o resultado corretamente. Depois que a regra de mapeamento de correspondência de nome de caso camelo é ativada, todos os dados da tabela t_comment consultados são mapeados com êxito para os objetos de classe de entidade Comment correspondentes.

 * Você precisa adicionar anotações @Mapper no arquivo de interface MyBatis. Se você escrever muitas interfaces Mapper, você pode adicionar anotações @MapperScan ("XXX") à classe de inicialização do projeto [precisa especificar o nome do pacote específico que precisa ser scanned] para evitar um por um O problema causado pela adição da anotação @Mapper

 * Após adicionar a anotação @Mapper, esta interface irá gerar a classe de implementação correspondente em tempo de compilação. Deve-se notar que o método com o mesmo nome não pode ser definido nesta interface, pois o mesmo id será gerado, o que significa que este interface não suporta re Contido


* Para vários parâmetros, cada parâmetro deve ser anotado com @Param, caso contrário, o parâmetro correspondente não será encontrado e um erro será relatado     
    público Login do usuário (@Param ("nome") String name, @Param ("pwd)") String pwd);

Categoria:  Spring Boot

Acho que você gosta

Origin blog.csdn.net/suixinsuoyu12519/article/details/112980343
Recomendado
Clasificación