目录
1. 创建工程结构
2. 配置数据源
2.1 pom.xml 中引用依赖
2.2 application.yml 中添加配置
2.3 测试
3. 编写类与映射文件
3.1 根据数据库编写实体类
3.2 编写映射文件xxxMapper.xml
3.3 编写Dao类,xxxMapper.java
4. 生成类与映射文件
4.1 pom.xml 中引用依赖
4.2 创建 generatorConfig.xml
4.3 添加 @Mapper 注解
4.4 扫描配置
5. 测试
6. 编写公共代码
6.1 定义状态码
6.2 定义返回结果
1. 创建工程结构
在Java目录下创建包,在Resources目录下创建文件夹,结构如下:
2. 配置数据源
2.1 pom.xml 中引用依赖
统一管理版本,在properties标签中加入版本号:
<!-- 管理依赖版块号-->
<!-- MySQL 连接驱动包-->
<mysql-connector.version>5.1.49</mysql-connector.version>
<!-- Mybatis 依赖-->
<mybatis-starter.version>2.3.0</mybatis-starter.version>
<!-- 阿里巴巴开源的数据源-->
<druid-starter.version>1.2.16</druid-starter.version>
添加依赖,在dependencies标签中加入相关依赖:
<!-- mysql 连接依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector.version}</version>
</dependency>
<!-- mybatis 依赖
其中已经包含了spring-jdbc不再重复引⽤,
此项⽬中使⽤spring-jdbc提供的HikariCP做为数据源, 相关配置在yml⽂件中
-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-starter.version}</version>
</dependency>
<!-- 阿⾥巴巴druid数据源,如果使⽤SpringBoot默认的数据源,删除或注释这个依赖即可 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid-starter.version}</version>
</dependency>
2.2 application.yml 中添加配置
在 spring 节点下添加数据源配置项:
datasource:
url: jdbc:mysql://localhost:3306/forum_db?characterEncoding=utf8&useSSL=false
# 数据库连接串
username: root # 数据库⽤⼾名
password: 123456 # 数据库密码
driver-class-name: com.mysql.cj.jdbc.Driver # 数据库连接驱动
2.3 测试
在 test --> java 目录下创建测试类 ForumApplicationTests ,写入如下代码,并右键运行:
@SpringBootTest
class ForumApplicationTests {
@Resource
private DataSource dataSource;
@Test
public void testConnection () throws SQLException {
System.out.println("dataSource = " + dataSource.getClass());
//获取数据连接
Connection connection = dataSource.getConnection();
System.out.println("connection = " + connection);
System.out.println("connection Class = " + connection.getClass());
}
@Test
void contextLoads() {
System.out.println("TEST: 基于 Spring 的前后端分离的论坛系统");
}
}
出现以上测试结果说明测试成功。
3. 编写类与映射文件
3.1 根据数据库编写实体类
3.2 编写映射文件xxxMapper.xml
3.3 编写Dao类,xxxMapper.java
4. 生成类与映射文件
4.1 pom.xml 中引用依赖
统一管理版本,在 properties 标签中加入版本号:
在 build --> plugins 标签中加入如下配置:
<!-- mybatis ⽣成器插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>${mybatis-generator-plugin-version}</version>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<phase>deploy</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<!-- 相关配置 -->
<configuration>
<!-- 打开⽇志 -->
<verbose>true</verbose>
<!-- 允许覆盖 -->
<overwrite>true</overwrite>
<!-- 配置⽂件路径 -->
<configurationFile>
src/main/resources/mybatis/generatorConfig.xml
</configurationFile>
</configuration>
</plugin>
4.2 创建 generatorConfig.xml
在 src/main/resources下创建mybatis目录,在mybatis目录下创建 generatorConfig.xml 文
件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 驱动包路径,location中路径替换成⾃⼰本地路径 -->
<classPathEntry location="D:\database\jar\mysql-connector-java-5.1.49.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 禁⽤⾃动⽣成的注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="true"/>
</commentGenerator>
<!-- 连接配置 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/forum_db?
characterEncoding=utf8&useSSL=false"
userId="root"
password="123456">
</jdbcConnection>
<javaTypeResolver>
<!-- ⼩数统⼀转为BigDecimal -->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 实体类⽣成位置 -->
<javaModelGenerator targetPackage="com.demo.forum.model"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- mapper.xml⽣成位置 -->
<sqlMapGenerator targetPackage="mapper"
targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- DAO类⽣成位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.demo.forum.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 配置⽣成表与实例, 只需要修改表名tableName, 与对应类名domainObjectName 即
可-->
<table tableName="t_article" domainObjectName="Article"
enableSelectByExample="false"
enableDeleteByExample="false" enableDeleteByPrimaryKey="false"
enableCountByExample="false"
enableUpdateByExample="false">
<!-- 类的属性⽤数据库中的真实字段名做为属性名, 不指定这个属性会⾃动转换 _ 为
驼峰命名规则-->
<property name="useActualColumnNames" value="true"/>
</table>
<table tableName="t_article_reply" domainObjectName="ArticleReply"
enableSelectByExample="false"
enableDeleteByExample="false" enableDeleteByPrimaryKey="false"
enableCountByExample="false"
enableUpdateByExample="false">
<property name="useActualColumnNames" value="true"/>
</table>
<table tableName="t_board" domainObjectName="Board"
enableSelectByExample="false" enableDeleteByExample="false"
enableDeleteByPrimaryKey="false" enableCountByExample="false"
enableUpdateByExample="false">
<property name="useActualColumnNames" value="true"/>
</table>
<table tableName="t_message" domainObjectName="Message"
enableSelectByExample="false"
enableDeleteByExample="false" enableDeleteByPrimaryKey="false"
enableCountByExample="false"
enableUpdateByExample="false">
<property name="useActualColumnNames" value="true"/>
</table>
<table tableName="t_user" domainObjectName="User"
enableSelectByExample="false" enableDeleteByExample="false"
enableDeleteByPrimaryKey="false" enableCountByExample="false"
enableUpdateByExample="false">
<property name="useActualColumnNames" value="true"/>
</table>
</context>
</generatorConfiguration>
4.3 添加 @Mapper 注解
dao包下的每个 xxxMapper.java 添加 @Mapper注解。
4.4 扫描配置
config 包下新建 MybatisConfig 类,指定Mybatis的扫路径。
//配置类
@Configuration
//指定Mybatis的扫描路径
@MapperScan("com.example.demo.dao")
public class MybatisConfig {
}
application.yml中加⼊mybatis配置:
# mybatis 相关配置,单独配置,顶格写
mybatis:
mapper-locations: classpath:mapper/**/*.xml # 指定 xxxMapper.xml的扫描路径
5. 测试
目标文件布局如下图所示:
编写测试代码进行测试:
@SpringBootTest
class ForumApplicationTests {
@Resource
private DataSource dataSource;
@Resource
private ObjectMapper objectMapper;
@Resource
private UserMapper userMapper;
@Test
public void testMybatis() throws JsonProcessingException {
User user = userMapper.selectByPrimaryKey(1l);
System.out.println(objectMapper.writeValueAsString(user));
}
@Test
public void testConnection () throws SQLException {
System.out.println("dataSource = " + dataSource.getClass());
//获取数据连接
Connection connection = dataSource.getConnection();
System.out.println("connection = " + connection);
System.out.println("connection Class = " + connection.getClass());
}
@Test
void contextLoads() {
System.out.println("TEST: 基于 Spring 的前后端分离的论坛系统");
}
}
运行结果如下图所示:
6. 编写公共代码
6.1 定义状态码
对执行业务处理逻辑过程中可能出现的成功与失败状态做针对性描述,用 枚举 定义状态码,先定义一部分,业务中遇到新的问题再添加。
这里的状态码是描述程序执行过程中可能出现的问题描述。
新建 common 包,在 common 包下创建枚举类型命名为ResultCode。
6.2 定义返回结果
系统实现前后端分离,统一返回 JSON 格式的字符串,需要定义一个类,其中包含状态码,描述信息,返回的结果数据。
在 common 包下,创建 AppResult 类。