1.基础环境搭建
实现Spring Boot与数据访问层框架的整合,主要是引入对应的依赖启动器和数据库的相关参数设置。
(1) 数据准备
在MySQL中创建一个新的数据库,在新建的数据库中新建两个表,并预先插入几条测试数据。
示例:
# 创建数据库
CREATE DATABASE springbootdata;
# 选择使用数据库
USE springbootdata;
# 创建表t_article并插入相关数据
DROP TABLE IF EXISTS `t_article`;
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', 'Spring Boot基础入门', '从入门到精通讲解...');
INSERT INTO `t_article` VALUES ('2', 'Spring Cloud基础入门', '从入门到精通讲解...');
# 创建表t_comment并插入相关数据
DROP TABLE IF EXISTS `t_comment`;
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', '很全、很详细', '狂奔的蜗牛', '1');
INSERT INTO `t_comment` VALUES ('2', '赞一个', 'tom', '1');
INSERT INTO `t_comment` VALUES ('3', '很详细', 'kitty', '1');
INSERT INTO `t_comment` VALUES ('4', '很好,非常详细', '张三', '1');
INSERT INTO `t_comment` VALUES ('5', '很不错', '张杨', '2');
(2) 创建项目,引入相应启动器
创建一个名为chapter03_blog的项目,并在Dependencies依赖中选择MySQL和MyBatis的依赖。并根据自己的需要修改依赖的版本。
编写数据库表对应的实体类,在项目中新建一个com.example.domain包,在包中新建两个实体类Comment和Article
(3) 编写配置文件
在application.properties配置文件中,进行数据库连接配置。然后在pom.xml中添加druid数据源的依赖启动器。
需要说明的是,上述配置的druid的依赖启动器内部已经初始化了部分运行参数,如果需要修改,要在全局配置文件中进行配置。
配置完成后可以在测试类中编写一个测试方法测试数据库连接是否成功。
示例:
@Resource
private DataSource druidDataSourse;
@Test
public void DbsContent()
{
System.out.println(druidDataSourse);
}
2.使用注解的方式整合MyBatis
(1) 创建Mapper接口文件。在项目中新建一个com.example.mapper的包,在包下新建一个对数据库表t_comment数据操作的接口CommentMapper
@Mapper
public interface CommentMapper {
@Select("SELECT * FROM t_comment WHERE id=#{id}")
public Comment findById(int 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(Comment comment);
在测试类中编写单元测试进行接口方法测试。
@Resource
private CommentMapper commentMapper;
@Test
public void selectComment()
{
Comment comment = commentMapper.findById(1);
System.out.println(comment);
}
执行测试方法selectComment(),控制台的输出结果如下
控制台中查询的Comment的aId属性为null,没有映射成功。这是因为编写的实体类Comment中使用了驼峰命名方式将t_comment表中的a_id字段设计成了aId属性,所以无法正确映射查询结果。可以在全局配置文件中添加开启驼峰命名匹配映射配置,mybatis.configuration.map-underscore-to-camel-case=true
来解决这个问题。