前面几篇文章简单介绍了MyBatis的配置和使用,今天我们来在SpringBoot中整合MyBatis做一个简单的小demo.关于MyBatis的基础使用,请参考下列文章:
MyBatis(一)单表操作
MyBatis(二)多表关联
MyBatis(三)动态SQL
好,下面正式开始,这里使用的开发工具还是IDEA, 数据库和表沿用上面三篇文章中的Article,Author和Comment表。
1.新建一个SpringBoot工程,工程中包含MyBatis, MySql和Web三个模块。
2.按照标准的普通的web工程结构划分,本工程包含controller, dao, domain, service几个层。简单说明一下几个包和文件的用途:
dao层:用来存放MyBatis Mapper映射接口类。
DemoApplication:这个是SpringBoot工程的入口文件,像本例中配置Mapper映射类扫描路径就是在这里配置的。
ArticleMapper.xml:这个是SQL配置文件,关于MyBatis的sql写法有两种,一种是用xml配置,另一种就是使用注解。个人倾向于xml配置,一方面可以集中管理,另一方面,使用注解没有xml配置来的灵活。
application.properties:SpringBoot工程的配置文件,数据源和MyBatis的一些配置都写在这个文件中。说到配置文件,我们也可以新建,比如开发环境一个.properties文件,正式环境一个.properties文件,然后在applaction.properties中进行切换。
3.好了,现在,我们来看一下每个文件中的内容:
先说application.properties:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
##格式化json输出
spring.jackson.serialization.indent-output=true
##实体类包路径,该路径下的实体类在Mapper文件中可直接使用类名,不需要再写完整的类路径。
mybatis.type-aliases-package=com.archer.example.domain
mybatis.mapper-locations=classpath:mapper/*.xml
spring.datasource那几行用来配置数据源,包括驱动,路径,用户名和密码等。
spring.jackson.serialization.indent-output用来格式化json输出,自己可以体会下不设置会怎样。
最后两个用来设置mybatis的实体类路径和mapper文件的路径。
mapper/*.xml表示mapper文件下所有的xml文件。
ArticleDao:
@Repository
public interface ArticleDao {
Article findArticleTitleLike(@Param("title") String title);
}
findArticleTitleLike对应ArticleMapper.xml中select元素的id.
这里的@Param("title")用来指定Mapper XML文件中sql 语句参数的名字。当然你也可以这么写:
Article findArticleTitleLike(Map<String, Object> paramMap);
然后在paramMap中指定一个key为"title"的键值对参数。
DemoApplication:
@SpringBootApplication
//Mapper接口类扫描设置
@MapperScan("com.archer.example.dao")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
这里我们需要配置Mapper映射接口类的扫描路径
@MapperScan("com.archer.example.dao")用来指定哪个路径下放置的是Mapper映射接口类。SpringBoot会根据这个目录下面的类动态生成一个对应的接口实现类。
其他的文件不再介绍,ArticleMapper.xml中不明白的可以参考文章开头的三篇文章。
打开浏览器,输入
http://localhost:8080/api/getArticle?articleTitle=文章名称
网友评论