上一篇介绍了springBoot的基本概念,启动得方式以及它的一些核心注解,这篇会将之与mybatis整合做一个简单得demo,
接下来直接看代码,我们首先来看看它应该加载那些pom文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.kfit</groupId>
<artifactId>spring-boot-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spring-boot-mybatis</name>
<url>http://maven.apache.org</url>
<!-- spring boot parent节点,引入这个之后,在下面和spring boot相关的就不需要引入版本了;--> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<!-- web⽀支持: 1、web mvc; 2、restful; 3、jackjson⽀支持; 4、aop ........ --> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mysql 数据库驱动. -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- spring-boot mybatis依赖:请不不要使⽤用1.0.0版本,因为还不不⽀支持拦截器件, 1⼤大家使⽤用新版本即可 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version>
</dependency>
<!-- MyBatis提供了拦截器接口,我们可以实现⾃⼰的拦截器, 将其作为一个plugin装入到SqlSessionFactory中。 Github上有位开发者写了了一个分页插件,我觉得使用起来还可以,挺⽅便的。 Github项目地址: https://github.com/pagehelper/Mybatis-PageHelper
它同时提供了 springboot 的快速模式
<dependency>
<groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId>
<version>5.0.2</version>
</dependency> -->
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelperspring-boot-starter pagerhelper的springboot 配置方式 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.3</version>
</dependency>
</dependencies>
</project>
之后我们来看一下有关于数据库得一些配置,我们放在application.properties 文件当中
spring.datasource.url = jdbc:mysql://localhost:3306/test
spring.datasource.username = root
spring.datasource.password = qishimeiyoumima
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20 spring.datasource.max-idle=8
spring.datasource.min-idle=8 spring.datasource.initial-size=10 spring.http.encoding.charset= UTF-8
下面我们建立一个简单得pojo
public class Demo {
private long id;
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
之后是mapper文件,mybatis在 springboot 项⽬中可以通过注解的方式使用 sql 语句
具体如下所示:创建一个mapper文件
public interface DemoMappper {
//#{name}:参数占位符
@Select("select *from Demo where name=#{name}")
public List<Demo> likeName(String name);
@Select("select *from Demo where id = #{id}")
public Demo getById(long id);
@Select("select name from Demo where id = #{id}")
public String getNameById(long id);
/** * 保存数据. */
@Insert("insert into Demo(name) values(#{name})")
@Options(useGeneratedKeys=true,keyProperty="id",keyColumn="id")
public void save(Demo demo);
}
//注意在实际得项目当中mapper文件一般是和静态资源文件一样 一起放在resources文件夹下的
service文件 :
@Service
public class DemoService {
//在service当中将创建好的mapper自动注入到我们得service当中
@Autowired
private DemoMappper demoMappper;
public List<Demo> likeName(String name){
return demoMappper.likeName(name);
}
@Transactional//添加事务,在⽅方法上⾯面是给当前⽅方法添加,在类中是给类中的所有⽅方法添加 public void save(Demo demo){
demoMappper.save(demo);
}
}
最后是 controller
@RestController//声明式⼀一个 rest ⻛风格的 controller
public class DemoController {
//将之前建立好的service注入进来
@Autowired
private DemoService demoService;
@RequestMapping(value = "/likeName/{name}")
public List<Demo> likeName(@PathVariable("name") String name){
/** 第⼀个参数:第几页;
* 第⼆个参数:每页获取的条数. */
PageHelper.startPage(1, 2);
return demoService.likeName(name);
}
@RequestMapping("/save")
public Demo save(){
Demo demo = new Demo();
demo.setName("张三");
demoService.save(demo);
return demo;
}
}
我们将启动类建立在最外层得包下,关于启动得方式大家可以去看上一篇博文,spring回去扫描和入口类在同一个包下得所有文件,这样就会为其自动得创建对象,从而我们得自动注入会生效;
最后我们来测试一下
访问http://localhost:8080/save
结果如下图所示 :
访问 http://localhost:8080/likeName/张三
当然我们也可以去配置全局地异常捕获:
要捕获全局异常只需要以下⼏几步即可
1. 创建⼀个类,在类上面添加@ControllerAdvice注解
2.编写任意⼀一个方法,参数是HttpServletRequest和Exception,在方法上面添加@ExceptionHandler 注解,方法返回值如果是字符串,则还需啊添加@ResponseBody,如果返回的是页面,则返回 ModelAndView 对象
3.按照自己的业务逻辑决定返回什么
下面是一个例子:
@ControllerAdvice
public class GloablExceptionHandler {
@ExceptionHandler
@ResponseBody
public String exceptionHandler(HttpServletRequest request, Exception e){
return "错误";
}
}
好了以上就是与mybatis得结合以及基本得异常处理得建立。