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支持: 1web mvc; 2restful; 3jackjson支持; 4aop ........ -->

    <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 mybatis-starter原理

Spring Boot:Spring Boot整合Mybatis案例

Spring Boot 实用MyBatis做数据库操作

Spring boot 入门三:spring boot 整合mybatis 实现CRUD操作

Spring Boot集成Mybatis及通用Mapper

spring boot 与 Mybatis整合(*)