介绍

从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. HTML5 + AJAX ( jQuery版本 ) 文件上传带进度条

    页面技术:HTML5 + AJAX ( jQuery) 后台技术:Servlet 3.0 服务器:Tomcat 7.0 jQuery版本:1.9.1 Servlet 3.0 代码 package or ...

  2. Qt下QTableWidget的使用

    1.QTableWidget的基本设置 ui->tableWidget->setColumnCount(11); ui->tableWidget->setRowCount(Nu ...

  3. Android学习之两款下拉刷新库分享

    昨天没有写博客.心里非常罪过呀,今天给大家写两种比較常见的下拉刷新的用法.一款是SwipeRefreshLayout,一款是CircleRefreshLayout. SwipeRefreshLayou ...

  4. Linux curl 模拟form表单提交信息和文件

    Linux curl 模拟form表单提交信息和文件   curl是一个命令行方式下传输数据的开源传输工具,支持多种协议:FTP.HTTP.HTTPS.IMAP.POP3.TELNET等,功能超级强大 ...

  5. 5.3 SpEL语法

    SqEL是一个可以独立于spring的表达式语言,即它可以用在XML中对语法进行简化 5.3 SpEL语法5.3.1 基本表达式一.字面量表达式: SpEL支持的字面量包括:字符串.数字类型(int. ...

  6. sqlserver 安全

    1.将数据库的用户名和密码加密保存,使用加密传输.2.将数据库里面的用户除了这个用户所有的用户都禁用,把该用户的密码改的很复杂,很难破解那种3.设置数据库的可连接方式(所有的方式的设置).4.删除数据 ...

  7. WPF进阶之接口(2):IDisposable,ICollectionView

    废话不多说,进入正题,先来说说IDisposable,看例子(来自MSDN): using System; using System.ComponentModel; // 下面的例子将展示一个实施了I ...

  8. leetcode difficulty and frequency distribution chart

    Here is a difficulty and frequency distribution chart for each problem (which I got from the Interne ...

  9. 开发VS2008 AddIn 入门Sample

    本文主要介绍的是VS2008插件开发 环境要求:VS2008:.Net3.5 目标:开发插件功能为“在VS中创建文本文档,并在文本开头输入//This code was created For Tes ...

  10. 使用javascript来访问本地文件夹

    常用的.net 的aspx文件由于运行在服务器端,并不具有访问用户本地文件夹的权限,导致类似于<a href="file:///d:/backup" > open fo ...