`

145. Spring Boot MyBatis升级篇-XML

阅读更多

 

 

需求缘起:

在一节视频中,有这么一段留言:“会不会推出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)测试

 

       接下来看看本节的内容:

 

1MyBatis介绍

       来源MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 201311月迁移到Github

       介绍MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java POJOsPlain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。

 

2)配置思路

       Spring Boot中使用xml集成MyBatis的话,那么核心的文件就是实体类和SQL的映射类,比如DemoMapper,在此类当中就是普通的接口即可,那么对应SQL配置文件在Demo.xml中,那么要怎么能够识别到DemoMapper类呢,使用@MapperScan();在Demo.xml中使用<mapper> 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文件添加相关依赖包:

 

<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-xml</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
 
  <name>spring-boot-mybatis-xml</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>
 

 

 

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)编写映射接口DemoMapperxml文件

编写XML文件,Demo.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
       PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kfit.demo.mapper.DemoMapper">
   
    <!--  insert 语句. -->
    <insert id="save" parameterType="com.kfit.demo.bean.Demo" useGeneratedKeys="true" keyProperty="id">
       insert into demo (name) values (#{name})
    </insert>
   
</mapper>
 

 

 

编写DemoMapper接口:

 

package com.kfit.demo.mapper;
 
public interface DemoMapper {
    public void save(Demo demo);
}
 

 

 

 

8)编写serviceDemoService

 

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)测试

启动,访问地址:http://127.0.0.1:8080/save

在浏览器可以看到:

{

id0,

name"张三"

}

 

 

à悟空学院:https://t.cn/Rg3fKJD

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

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

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

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr 

分享到:
评论
2 楼 林祥纤 2018-01-30  
luwenting87 写道
您好,pom文件中需要加
<resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
</resources>

springboot项目默认的打包时,不会把java文件中的xml配置文件打包进去


什么版本的?
1 楼 luwenting87 2018-01-29  
您好,pom文件中需要加
<resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
</resources>

springboot项目默认的打包时,不会把java文件中的xml配置文件打包进去

相关推荐

    spring-boot2.0全新教程实例20例.zip

    - [spring-boot-mybatis-xml-mulidatasource](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-mybatis/spring-boot-mybatis-xml-mulidatasource):Spring Boot + Mybatis (Xml 版) 多...

    mybatis-plus-generator-ui:对mybatis-plus-generator进行封装,通过Web UI快速生成兼容的Spring boot,mybatis-plus框架的各类业务代码

    提供一致的Web UI用于生成兼容mybatis-plus框架的相关功能代码,包括Entity,Mapper,Mapper.xml,Service,Controller等,可以自定义模板以及各种输出参数,也可以通过SQL查询语句直接生成代码。 使用方法 ♡maven...

    spring-boot-starter-mybatis:Spring Boot MyBatis入门

    春天启动启动器mybatis 这是MyBatis的非官方Spring Boot Starter 与官方相反,它遵循其他Spring Boot数据存储库的约定并实现适当...spring.mybatis.mapperLocations =classpath*:mapper/**/*.xml # mappers file spri

    Spring boot 示例 官方 Demo

    spring-boot-mybaits-xml:xml配置版本 spring-boot-mybatis-mulidatasource:springboot+mybatis多数据源最简解决方案 spring-boot-mybatis-annotation-mulidatasource:springboot+mybatis(注解版)多数据源最简...

    spring boot + mybatis +mapper.xml 项目

    最简单的springboot + mybatis +mapper.xml 配置项目 简单配置java spring boot项目

    spring-boot-mybatis-plus数据层框架

    pdf介绍spring-boot-mybatis-plus数据层框架。 Spring Boot中使用MyBatis-Plus作为数据层框架,可以极大提高开发效率和简化数据操作的复杂性。 多数据源支持:MyBatis-Plus支持配置多数据源,这对于需要处理多个...

    Spring Boot Examples

    spring-boot-mybaits-xml:xml配置版本 spring-boot-mybatis-mulidatasource:springboot+mybatis多数据源最简解决方案 spring-boot-mybatis-annotation-mulidatasource:springboot+mybatis(注解版)多数据源最...

    spring-boot-集成mybatis带分页page

    # Spring Boot 集成 MyBatis, 分页插件 PageHelper, 通用 Mapper ## 项目依赖 ```xml &lt;!--mybatis--&gt; &lt;groupId&gt;org.mybatis.spring.boot &lt;artifactId&gt;mybatis-spring-boot-starter &lt;version&gt;1.1.1 &lt;!...

    spring-boot-mybatis-push-01.rar

    mybatis在持久层框架中还是比较火的,一般...虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。

    mybatis_plus-17版本.zip

    mybatis_plus插件,idea快速从mapper.java文件进入mapper.xml文件,通用版。使用起来开发更快捷,mybatis一键跳转工具,安装可参考“我的博客-&gt;idea开发相关-&gt;idea快速从mapper.java跳转到mapper.xml文件的插件”。

    spring-boot-mybatis

    Spring Boot MyBatis 版本 基于Spring Boot 1.3.0.M5 介绍 由于默认情况下在Spring Boot项目中不支持MyBatis而创建。 只需添加依赖项,即可在Spring Boot中支持使用MyBatis 已实现,因此无需现有的xml配置即可扩展...

    202307-MyBatis面试题(2023最新版)思维导图.zip

    - Spring Boot - Spring MVC - Spring Data - Spring Security - Spring Cloud 4. Web开发: - HTML、CSS、JavaScript - HTTP协议 - Servlet、JSP - AJAX、JSON、XML 5. 框架和工具: - MyBatis - ...

    spring boot + spring + mybatis 集合xml

    spring boot + spring + mybatis 集合xmlspring boot + spring + mybatis 集合xmlspring boot + spring + mybatis 集合xml

    Spring Boot MyBatis-Plus

    Spring Boot整合MyBatis-Plus,使用MySQL,基于xml开发及注解开发

    202318-Spring Cloud面试题(2023最新版)思维导图.zip

    - Spring Boot - Spring MVC - Spring Data - Spring Security - Spring Cloud 4. Web开发: - HTML、CSS、JavaScript - HTTP协议 - Servlet、JSP - AJAX、JSON、XML 5. 框架和工具: - MyBatis - ...

    202306-Spring面试题((2023最新版)思维导图.zip

    - Spring Boot - Spring MVC - Spring Data - Spring Security - Spring Cloud 4. Web开发: - HTML、CSS、JavaScript - HTTP协议 - Servlet、JSP - AJAX、JSON、XML 5. 框架和工具: - MyBatis - ...

    202305-Spring MVC面试题(2023最新版)思维导图.zip

    - Spring Boot - Spring MVC - Spring Data - Spring Security - Spring Cloud 4. Web开发: - HTML、CSS、JavaScript - HTTP协议 - Servlet、JSP - AJAX、JSON、XML 5. 框架和工具: - MyBatis - ...

    基于Spring Boot和Mybatis-Plus的音乐网站后端设计源码

    本源码提供了一个基于Spring Boot和Mybatis-Plus的音乐网站后端设计。项目包含52个文件,其中包括30个Java源文件、4个属性文件、3个Gitignore文件、3个JAR包、3个命令文件、3个XML文件、3个YAML文件、1个开发环境...

    202310-Tomcat面试题(2023最新版)思维导图.zip

    - Spring Boot - Spring MVC - Spring Data - Spring Security - Spring Cloud 4. Web开发: - HTML、CSS、JavaScript - HTTP协议 - Servlet、JSP - AJAX、JSON、XML 5. 框架和工具: - MyBatis - ...

    202314-Dubbo面试题(2023最新版)思维导图.zip

    - Spring Boot - Spring MVC - Spring Data - Spring Security - Spring Cloud 4. Web开发: - HTML、CSS、JavaScript - HTTP协议 - Servlet、JSP - AJAX、JSON、XML 5. 框架和工具: - MyBatis - ...

Global site tag (gtag.js) - Google Analytics