返回

从零开始构建个人博客:Spring Boot + Vue-Element 实战教程(六)

后端

前言

在上篇文章中,我们介绍了如何使用 Git 对项目进行版本管理,实现多人协作开发和方便的代码管理。本节我们将深入讲解项目的各个组成部分,包括项目包的创建和 MyBatis 的配置。

项目包创建

首先,我们需要创建一个 Java 项目的根目录,并在这个根目录下创建两个子目录:src/main/javasrc/main/resourcessrc/main/java 目录用于存放 Java 源代码,而 src/main/resources 目录用于存放配置文件和资源文件。

src/main/java 目录下,我们需要创建一个包结构来组织我们的代码。例如,我们可以创建一个名为 com.example.blog 的包,并在该包下创建子包 controllerservicedao 等,分别用于存放控制器、服务层、数据访问层等代码。

MyBatis 配置

为了使用 MyBatis,我们需要在 src/main/resources 目录下创建一个名为 mybatis-config.xml 的配置文件。在这个配置文件中,我们需要指定数据库连接信息、实体类和映射器之间的关系等信息。

数据库连接信息包括:

  • 驱动程序类名
  • 数据库连接 URL
  • 数据库用户名
  • 数据库密码

实体类和映射器之间的关系可以通过 mapper 元素来指定。mapper 元素的 resource 属性指定了映射器 XML 文件的路径,class 属性指定了实体类的全限定类名。

以下是 mybatis-config.xml 配置文件的示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
  <environments>
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/blog"/>
        <property name="username" value="root"/>
        <property name="password" value="password"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/example/blog/dao/ArticleMapper.xml" class="com.example/blog/dao/ArticleMapper"/>
  </mappers>
</configuration>

DAO 层实现

在 MyBatis 中,DAO 层主要负责对数据库的操作。DAO 层的接口通常定义在 dao 包下,而接口的实现类通常定义在 dao.impl 包下。

接口定义

DAO 层的接口通常继承自 MyBatis 提供的 BaseMapper 接口。BaseMapper 接口提供了一些基本的方法,如:selectOne()selectList()insert()update()delete() 等。

例如,我们可以定义一个名为 ArticleMapper 的接口,用于操作 Article 表:

public interface ArticleMapper extends BaseMapper<Article> {

}

实现类编写

DAO 层的实现类通常继承自 MyBatis 提供的 MapperImpl 类。MapperImpl 类实现了 BaseMapper 接口中定义的所有方法,并提供了默认的实现。

例如,我们可以定义一个名为 ArticleMapperImpl 的类,用于实现 ArticleMapper 接口:

public class ArticleMapperImpl extends MapperImpl<Article> implements ArticleMapper {

}

ArticleMapperImpl 类中,我们可以重写 BaseMapper 接口中定义的方法,以实现我们自己的逻辑。例如,我们可以重写 selectOne() 方法来查询单条 Article 记录:

@Override
public Article selectOne(Article article) {
  return sqlSession.selectOne("com.example.blog.dao.ArticleMapper.selectOne", article);
}

代码示例

以下是一个使用 MyBatis 操作数据库的代码示例:

public class ArticleService {

  @Autowired
  private ArticleMapper articleMapper;

  public Article getArticleById(Long id) {
    return articleMapper.selectOne(new Article(id));
  }

  public List<Article> getAllArticles() {
    return articleMapper.selectList(null);
  }

  public void saveArticle(Article article) {
    articleMapper.insert(article);
  }

  public void updateArticle(Article article) {
    articleMapper.update(article);
  }

  public void deleteArticleById(Long id) {
    articleMapper.delete(new Article(id));
  }
}

在上面的代码中,ArticleService 类提供了对 Article 表的 CRUD 操作。ArticleService 类通过 @Autowired 注解自动装配 ArticleMapper 接口的实现类。

总结

在本节中,我们介绍了如何创建 Spring Boot + Vue-Element 个人博客项目的项目包,并配置 MyBatis 以实现数据库的连接和操作。我们详细讲解了如何定义 DAO 层的接口和实现类,并提供了代码示例。通过本教程,您已经掌握了在 Spring Boot 和 Vue-Element 中使用 MyBatis 进行数据库操作的技巧,为您的个人博客项目打下了坚实的基础。