SpringBoot-Mybatis 注解开发之一(基础)

本节大纲:

(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(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。

(2)注解思路

在Spring Boot中使用注解集成MyBatis的话,那么核心的文件就是实体类和SQL的映射类,比如DemoMapper,在此类当中就是方法和对应的注解sql语句,那么要怎么能够识别到DemoMapper类呢,在Spring Boot中就特别的简单,在启动类App中加入一个注解@MapperScan(指定Mapper包路径)。

(3)新建project以及添加依赖包

新建工程取名为spring-boot-mybatis。

       在pom.xml文件中添加依赖包:

  1. <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>  
      <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)编写控制类DemoController

  1. 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;  
        }  
         
    }  

(5)编写service类DemoService

  1. 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);  
        }  
         
    }  

(6)编写映射接口DemoMapper      

这个类就是对应的SQL注解:

  1. 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)编写实体类Demo

  1. package com.kfit.demo.bean;  
       
    public class Demo {  
        private int id;  
        private String name;  
        public int getId() {  
           returnid;  
        }  
        public void setId(int id) {  
           this.id = id;  
        }  
        public String getName() {  
           return name;  
        }  
        public void setName(String name) {  
           this.name = name;  
        }  
    } 

(8)创建启动类App.java

  1. package com.kfit;  
    import org.mybatis.spring.annotation.MapperScan;  
    import org.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);  
        }  
    }  

(9)配置数据库连接池

在application.properties中配置MySQL数据库连接:

Properties代码

  1. ########################################################  
    ###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)测试

在访问之前需要注意:

(1)确保创建了数据库test;

(2)确保创建了表Demo,建表语句如下:

  1. CREATE TABLE  demo (  
    id  int  NOT NULL AUTO_INCREMENT ,  
    name  varchar(100) NULL ,  
    PRIMARY KEY (id)  
    ); 

 访问之后,在浏览器端会看到数据:

{"id":0,"name":"张三"}

 

猜你喜欢

转载自blog.csdn.net/tanglei5492/article/details/81479620
今日推荐