13753cc92affea4c294ee8f6dd76971c.png

需求缘起:

在一节视频中,有这么一段留言:“会不会推出SpringBoot整合Mybaits配置文件sqlMapConfig.xml搭配mapper.xml的视频呢???看到有这个整合直接付款来看,结果是急速开发模式,sql都写在类中了,想看配置方式的 大神出一个吧。”粉丝需求,那才是真的需求。好吧,废话太多,不好,不好,还是赶紧进入正题。

本节大纲:

(1)MyBatis介绍

(2)配置思路

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

(4)创建启动类App.java

(5)编写实体类Demo

(6)编写application配置文件,指定xml路径

(7)编写映射接口DemoMapper和XML

(8)编写service类DemoService

(9)编写控制类DemoController

(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中使用xml集成MyBatis的话,那么核心的文件就是实体类和SQL的映射类,比如DemoMapper,在此类当中就是普通的接口即可,那么对应SQL配置文件在Demo.xml中,那么要怎么能够识别到DemoMapper类呢,使用@MapperScan();在Demo.xml中使用的namespace属性进行指定指定xml文件和mapper的对应关系,那么现在的问题就是如何识别到Demo.xml配置文件呢,这个就很简单了,在application.properties文件中配置mapper的位置即可,形如:mybatis.mapper-locations=classpath:mybatis/mapper/*.xml。

根据以上的思路,那我们编码大概的思路就是:

(a)编写实体类Demo;

(b)编写配置文件Demo.xml,主要是SQL;

(c)编写DemoMapper和Demo是对应的,在Service层就可以调用DemoMapper;

(d)在application.properties文件中配置Demo.xml文件的路径;

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

新建project,取名为spring-boot-mybatis-xml,在pom.xml文件添加相关依赖包:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.kfit

spring-boot-mybatis-xml

0.0.1-SNAPSHOT

jar

spring-boot-mybatis-xml

http://maven.apache.org

UTF-8

org.springframework.boot

spring-boot-starter-parent

1.4.1.RELEASE

junit

junit

test

org.springframework.boot

spring-boot-starter-web

mysql

mysql-connector-java

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.0

(4)创建启动类App.java

编写启动类,注意,添加了@MapperScan("com.kfit.*.mapper"),扫描mapper接口:

package com.kfit;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

/**

*

* @author Angel --守护天使

* @version v.0.1

* @date 2017年8月4日

*/

@SpringBootApplication

@MapperScan("com.kfit.*.mapper")

public class App {

public static void main(String[] args) {

SpringApplication.run(App.class, args);

}

}

(5)编写实体类Demo

编写Demo类,主要属性id,name:

package com.kfit.demo.bean;

public class Demo {

private int id;

private String name;

public int getId() {

return id;

}

public void setId(intid) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

(6)编写application配置文件,指定xml路径

########################################################

###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

########################################################

###mybatis配置.

########################################################

mybatis.mapper-locations=classpath:com/kfit/*/mapper/*.xml

在这里重要的配置是:mybatis.mapper-locations=classpath:com/kfit/*/mapper/*.xml

(7)编写映射接口DemoMapper和xml文件

编写XML文件,Demo.xml:

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

insert into demo (name) values (#{name})

编写DemoMapper接口:

package com.kfit.demo.mapper;

public interface DemoMapper {

public void save(Demo demo);

}

(8)编写service类DemoService

package com.kfit.demo.service;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

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);

}

}

(9)编写控制类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;

// http://127.0.0.1:8080/save

@RequestMapping("/save")

public Demo save(){

Demo demo = new Demo();

demo.setName("张三");

demoService.save(demo);

return demo;

}

}

(10)测试

在浏览器可以看到:

{

id:0,

name:"张三"

}

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐