介绍

从Spring Boot项目名称中的Boot可以看出来,SpringBoot的作用在于创建和启动新的基于Spring框架的项目,它的目的是帮助开发人员很容易的创建出独立运行的产品和产品级别的基于Spring框架的应用。SpringBoot会选择最适合的Spring子项目和第三方开源库进行整合。大部分Spring Boot应用只需要非常少的配置就可以快速运行起来。

SpringBoot包含的特性

  • 创建可以独立运行的Spring应用
  • 直接嵌入Tomcat或Jetty服务器,不需要部署WAR文件
  • 提供推荐的基础POM文件来简化Apache Maven配置
  • 尽可能的根据项目依赖来自动配置Spring框架
  • 提供可以直接在成产环境中使用的功能,如性能指标,应用信息和应用健康检查
  • 没有代码生成,也没有XML配置文件

SpringBoot与Mybatis的完美融合

首先得先创建一个SpringBoot项目,然后基于这个项目在融合进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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>20171111</groupId>
<artifactId>springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>springboot</name>
<url>http://maven.apache.org</url> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.2.RELEASE</version>
<relativePath></relativePath>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency> </dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

之后创建一个启动类,其实在配置SpringBoot项目的时候就已经创建过一个启动类了,这里只是贴下代码:

package springboot;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer; @SpringBootApplication
public class HelloworldDemoApplication implements EmbeddedServletContainerCustomizer{
public static void main(String[] args){
SpringApplication.run(HelloworldDemoApplication.class, args);
} public void customize(ConfigurableEmbeddedServletContainer container) {
// TODO �Զ����ɵķ������
container.setPort(8088);
}
}

然后,创建配置文件在resource根目录下创建application.properties文件:

spring.thymeleaf.mode=LEGACYHTML5
spring.datasource.url=jdbc:mysql://10.0.20.252:3306/mybatis
spring.datasource.username=root
spring.datasource.password=Free-Wi11
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
server.port=8088

这里的server.port=8088是定义了该项目的端口,如果不指定,则使用默认端口8080

然后定义一个java的实体类,User.java

package com.fpc.Entity;

public class User {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} }

这里实体类的字段要和数据库的字段对应起来,如果实体类的字段和数据库的字段不相同,则需要使用别名:

这里我们看下数据库中的字段和数据:

mysql> select * from users;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | Lily | 24 |
| 2 | b | 27 |
| 5 | userrrrrr | 25 |
+----+-----------+------+
3 rows in set (0.00 sec)

之后,定义一个dao的接口:

package springboot.Mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select; import com.fpc.Entity.User; @Mapper
public interface UserDao {
@Select("select * from users where age=#{age}")
public List<User> get(int age);
}

@Mapper就是我们要与mybatis融合关键的一步,只要一个注解就搞定了。

然后再写一个测试类,也就是Controller:

package springboot.Controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import com.fpc.Entity.User; import springboot.Mapper.UserDao; @Controller
@RequestMapping("/b")
public class UserController {
@Autowired
private UserDao userDao; @RequestMapping("/showDao/{age}")
@ResponseBody
public List<User> show(@PathVariable("age") int age) {
// return userServices.show();
// return "hellllllllllllllllllllllll";
System.out.println(age);
return userDao.get(age);
} // @RequestMapping("/showDao")
// public Object showDao(int age) {
// return userServicesImpl.showDao(age);
// }
}

@RestController是对应的restful风格的控制器,但是我这里直接用的@Controller

运行该项目,Run as - Maven Build

打开浏览器,输入:localhost:8088/b/showDao/27,运行的结果如下:

按名字查找年龄为27的user,如果直接在数据库中查找也会得到一样的结果:

mysql> select * from users where age=27;
+----+------+------+
| id | name | age |
+----+------+------+
| 2 | b | 27 |
+----+------+------+
1 row in set (0.00 sec)

总结

  1. Controller,Entity,Mapper都要在跟启动类HelloworldDemoApplication在同一个目录下,而且启动类要在外层,项目目录结构会在下面给出。
  2. 声明一个UserDao的接口,在Mapper文件夹下,其中用注解的形式写了SQL语句,而且要在接口的外面协商@Mapper(这是关键)
  3. 在Controller中,直接通过@Autowired将UserDao直接注入到Controller中,然后就可以在Controller中进行操作了。

项目工程目录

SpringBoot与Mybatis整合实例详解的更多相关文章

  1. MyBatis与Spring的整合实例详解

    从之前的代码中可以看出直接使用 MyBatis 框架的 SqlSession 访问数据库并不简便.MyBatis 框架的重点是 SQL 映射文件,为方便后续学习,本节讲解 MyBatis 与 Spri ...

  2. SpringBoot与PageHelper的整合示例详解

    SpringBoot与PageHelper的整合示例详解 1.PageHelper简介 PageHelper官网地址: https://pagehelper.github.io/ 摘要: com.gi ...

  3. 深入浅出mybatis之启动详解

    深入浅出mybatis之启动详解 MyBatis功能丰富,但使用起来非常简单明了,今天我们来追踪一下它的启动过程. 目录 如何启动MyBatis 如何使用MyBatis MyBatis启动过程 如何启 ...

  4. 【python3+request】python3+requests接口自动化测试框架实例详解教程

    转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...

  5. 《深入理解mybatis原理2》 Mybatis初始化机制详解

    <深入理解mybatis原理> Mybatis初始化机制详解 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章将通过以下几点详细介绍MyBatis的初始化过程 ...

  6. python+requests接口自动化测试框架实例详解

    python+requests接口自动化测试框架实例详解   转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...

  7. 事件驱动模型实例详解(Java篇)

    或许每个软件从业者都有从学习控制台应用程序到学习可视化编程的转变过程,控制台应用程序的优点在于可以方便的练习某个语言的语法和开发习惯(如.net和java),而可视化编程的学习又可以非常方便开发出各类 ...

  8. Mybatis案例超详解(上)

    Mybatis案例超详解(上) 前言: 本来是想像之前一样继续跟新Mybatis,但由于种种原因,迟迟没有更新,快开学了,学了一个暑假,博客也更新了不少,我觉得我得缓缓,先整合一些案例练练,等我再成熟 ...

  9. MyBatis Mapper XML 详解

    MyBatis Mapper XML 详解 MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JD ...

随机推荐

  1. [i.MX6q]i.MX6q处理器,linux操作系统平台搭建 从SD卡启动系统

    转自:http://www.07net01.com/linux/2016/02/1232094.html 参照1:http://blog.csdn.net/girlkoo/article/detail ...

  2. Redis学习笔记——简介及配置

    1.Redis简介 Redis概述 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的应用程序的完美解决方案.Redis从它的许多竞争继承来的三个主要特点:Redis数据库 ...

  3. sublime text 3中配置golang开发环境

    1:首先下载 Go源码 https://golang.org/dl/  [根据不同的环境选择] 2:新建文件项目文件夹 存放  D:/Go_project 分别建立  bin  src  pkg  子 ...

  4. Python之修改文件MD5值

    import os def fileAppend(filename): myfile = open(filename,'a') myfile.write("####&&&am ...

  5. TensorFlow基础笔记(3) cifar10 分类学习

    TensorFlow基础笔记(3) cifar10 分类学习 CIFAR-10 is a common benchmark in machine learning for image recognit ...

  6. 23SpringMvc_各种参数绑定方式-就是<input那种

    本篇博文转载自http://www.cnblogs.com/HD/p/4107674.html: SpringMVC的各种参数绑定方式 1. 基本数据类型(以int为例,其他类似):Controlle ...

  7. java为安全起见对Applet有所限制

    Applet消亡的原因: ①java为安全起见对Applet有所限制:Applet不允许访问本地文件信息.敏感信息,不能执行本地指令(比如FORMAT),不能访问初原服务器之外的其他服务器. ① IE ...

  8. 嵌入式开发之davinci--- 8148/8168/8127 中的图像处理算法优化库vlib

    The Texas Instruments VLIB is an optimizedImage/Video Processing Functions Library for C programmers ...

  9. mysql -- 创建存储过程 往数据表中新增字段

    需求: 往某数据库的某个表中新增一个字段(若该字段已存在,则不做操作:若该字段不存在,则新增) 百度了n久,没有符合要求的例子,只有参考加自己琢磨,最终终于给弄出来了,以下是几个版本的更迭 第一版: ...

  10. 经典SQL面试题(转)

    http://www.cnblogs.com/kcher90/archive/2013/03/13/2957932.html 有三个表,如果学生缺考,那么在成绩表中就不存在这个学生的这门课程成绩的记录 ...