134. Spring Boot MyBatis升级篇-注解
Posted SpringBoot
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了134. Spring Boot MyBatis升级篇-注解相关的知识,希望对你有一定的参考价值。
需求缘起:
在一节视频中,有这么一段留言:“会不会推出SpringBoot整合Mybaits配置文件sqlMapConfig.xml搭配mapper.xml的视频呢??? 看到有这个整合直接付款来看,结果是急速开发模式,sql都写在类中了,想看配置方式的 大神出一个吧。”粉丝需求,那才是真的需求。好吧,废话太多,不好,不好,还是赶紧进入正题。
本节大纲:
(1)MyBatis介绍
(2)注解思路
(3)新建project以及添加依赖包
(4)创建启动类App.java
(5)编写实体类Demo
(6)编写映射接口DemoMapper
(7)编写service类DemoService
(8)编写控制类DemoController
(9)配置数据库连接池
(10)测试
接下来看看本节的内容:
(1)MyBatis介绍
来源:MyBatis 本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
介绍:MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(PlainOrdinary Java Objects,普通的 Java对象)映射成数据库中的记录。
(2)注解思路
在Spring Boot中使用注解集成MyBatis的话,那么核心的文件就是实体类和SQL的映射类,比如DemoMapper,在此类当中就是方法和对应的注解sql语句,那么要怎么能够识别到DemoMapper类呢,在Spring Boot中就特别的简单,在启动类App中加入一个注解@MapperScan(指定Mapper包路径)。
(3)新建project以及添加依赖包
新建工程取名为spring-boot-mybatis。
在pom.xml文件中添加依赖包:
<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.0http://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>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- spring boot parent节点,引入这个之后,在下面和spring boot相关的就不需要引入版本了; -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!-- 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版本,因为还不支持拦截器插件,
-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
</dependencies>
</project>
在这里主要引入Spring Boot的相关的依赖包,MySQL数据库驱动,spring boot mybatis依赖包。这里需要注意版本号,1.0.0的版本还不支持拦截器插件。
(4)创建启动类App.java
创建启动类App.java:
package com.kfit;
importorg.mybatis.spring.annotation.MapperScan;
importorg.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.kfit.*.mapper")
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
这里要注意的一个注解是@MapperScan(),这个就是扫描Mapper类,也就是我们编写的SQL类。
(5)编写实体类Demo
实体类中就两个字段,id和name:
package com.kfit.demo.bean;
public class Demo {
private int id;
private String name;
public int getId() {
returnid;
}
public void setId(intid) {
this.id = id;
}
public String getName() {
returnname;
}
public void setName(String name) {
this.name = name;
}
}
(6)编写映射接口DemoMapper
这个类就是对应的SQL注解:
package com.kfit.demo.mapper;
import org.apache.ibatis.annotations.Insert;
import com.kfit.demo.bean.Demo;
public interface DemoMapper {
@Insert("insert into Demo(name) values(#{name})")
public void save(Demo demo);
}
注意这个类是interface而不是class。
(7)编写service类DemoService
package com.kfit.demo.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.kfit.demo.bean.Demo;
import com.kfit.demo.mapper.DemoMapper;
@Service
public class DemoService {
@Autowired
private DemoMapper demoMapper;
@Transactional//添加事务.
public void save(Demo demo){
demoMapper.save(demo);
}
}
(8)编写控制类DemoController
package com.kfit.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.kfit.demo.bean.Demo;
import com.kfit.demo.service.DemoService;
@RestController
public class DemoController {
@Autowired
private DemoService demoService;
@RequestMapping("/save")
public Demo save(){
Demo demo = new Demo();
demo.setName("张三");
demoService.save(demo);
return demo;
}
}
(9)配置数据库连接池
在application.properties中配置MySQL数据库连接:
########################################################
###datasource -- mysql的数据库配置.
########################################################
spring.datasource.url = jdbc:mysql://localhost:3306/test
spring.datasource.username = root
spring.datasource.password = root
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
(10)测试
http://127.0.0.1:8080/save
在访问之前需要注意:
(1)确保创建了数据库test;
(2)确保创建了表Demo,建表语句如下:
CREATE TABLE demo (
id int NOT NULL AUTO_INCREMENT ,
name varchar(100) NULL ,
PRIMARY KEY (id)
);
访问之后,在浏览器端会看到数据:
{"id":0,"name":"张三"}
当然最主要的是查看数据库中是否多了条数据,这才是王道。
好了,祝大家好运,一次搞定。下篇博客接着MyBatis:《Spring Boot MyBatis升级篇-注解-自增ID》。
视频+交流平台:
à Spring Boot视频
http://412887952-qq-com.iteye.com/blog/2344171
à Spring Boot交流平台
http://412887952-qq-com.iteye.com/blog/2321532
以上是关于134. Spring Boot MyBatis升级篇-注解的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot:Spring Boot整合Mybatis案例