springboot springmvc mybatis_深圳嘉华学校之springboot实战教程
Springboot实战教程
目录
第一章 springBoot概述... 2
href="https://zhuanlan.zhihu.com/write#_Toc508178432">一、Spring Boot是什么?... 2
href="https://zhuanlan.zhihu.com/write#_Toc508178433">二、Spring Boot的主要目标是:... 2
三、Spring Boot优点和缺点... 2
第二章spring boot 实现控器(springMvc+json)... 3
案例:用springboot实现一个springMvc控制器,并测试成功... 3
准备:... 3
一、创建工程... 3
二、配置pom.. 4
三、写主程序(com.jh.Test.java) 6
四、写控制器(UserController) 6
五、编写配置文件 src/main/resources/application.properties. 6
六、启动服务Test,测试... 7
七、代码工程:... 7
第三章、 springboot 使用jsp做视图... 7
案例:springboot实现控制器跳转到jsp(springMvc+普通跳转) 7
一、准备:... 7
二、编写 控制器... 10
三 、编写配置文件application.properties. 11
四、编写跳转页面... 11
五、测试... 12
六代码工程: proj/TestSpringbootWeb(2控制器实现跳转jsp页面) 13
第四章:springboot 使用jdbc访问数据库... 13
案例 spring boot用jdbc访问数据库... 13
一、 建立数据库... 13
二、准备(工程+pom.xml+主程序) 15
三、编写配置文件application.properties. 19
四、创建实体类... 19
五、服务层接口,服务层实现... 19
六、写控制层... 21
七、测试... 21
(1)直接测试... 21
(2) 用jsp测试... 21
八、代码工程:见/proj/ TestSpringbootWeb(4 jdbc访问mysql) 22
第五章、springboot 集成 mybatis. 22
案例5:spring boot 与mybatis集成... 22
一、准备... 22
二、创建用户接口UserDao(不是类)和对应的UserMapper.xml文件... 27
(1)接口... 27
(2)创建UserMapper.xml. 27
三、配置application.properties. 28
四 服务层接口和实现... 28
五、控制层... 29
六、测试... 29
七、代码工程:/proj/5 spring boot 集成mybatis. 30
第六章、springboot 事务控制... 30
案例:创建springboot 工程,实现对用户的添加(要求mybatis+spring+springMvc+事务控制) 30
一、准备... 30
二、编写 UserDao.java接口和UserMapper.xml 34
三、写UserService 接口和实现类... 35
四、写控制层... 36
五、测试... 36
六、代码工程:/proj/TestSpringbootWeb(6 事务控制) 37
第七章:总结:... 37
第一章 springBoot概述
一、Spring Boot是什么?
首先Spring Boot不是一个框架,它是一种用来轻松创建具有最小或零配置的独立应用程序的方式。这是方法用来开发基于Spring的应用,但只需非常少的配置。
它提供了默认的代码和注释配置,快速启动新的Spring项目而不需要太多时间。它利用现有的Spring项目以及第三方项目来开发生产就绪(投入生产)的应用程序。
二、Spring Boot的主要目标是:
Ø 为所有Spring开发提供一个基本的,更快,更广泛的入门体验。
Ø 开箱即用,但随着需求开始偏离默认值,快速启动。
Ø 提供大型项目(例如嵌入式服务器,安全性,度量,运行状况检查,外部化配置)常见的一系列非功能特性。
Ø 绝对没有代码生成以及不需要XML配置,完全避免XML配置。
Ø 为了避免定义更多的注释配置(它将一些现有的 Spring Framework 注释组合成一个简单的单一注释)
Ø 避免编写大量import语句。
Ø 提供一些默认值,以便在短时间内快速启动新项目。
三、Spring Boot优点和缺点
Spring Boot的优点:
使用Java或Groovy开发基于Spring的应用程序非常容易。
它减少了大量的开发时间并提高了生产力。
它避免了编写大量的样板代码,注释和XML配置。
Spring Boot应用程序与其Spring生态系统(如Spring JDBC,Spring ORM,Spring Data,Spring Security等)集成非常容易。
它遵循“自用默认配置”方法,以减少开发工作量。
它提供嵌入式HTTP服务器,如Tomcat,Jetty等,以开发和测试Web应用程序非常容易。
它提供CLI(命令行界面)工具从命令提示符,非常容易和快速地开发和测试Spring Boot(Java或Groovy)应用程序。
它提供了许多插件来开发和测试Spring启动应用程序非常容易使用构建工具,如Maven和Gradle。
它提供了许多插件,以便与嵌入式和内存数据库工作非常容易。
Spring Boot缺点 :
将现有或传统的Spring Framework项目转换为Spring Boot应用程序是一个非常困难和耗时的过程。它仅适用于全新Spring项目
第二章 spring boot
第二章springboot 实现控器(springMvc+json)
案例:用springboot实现一个springMvc控制器,并测试成功
准备:
maven+eclipse+连接互联网
一、创建工程
TestSpringCloudWeb工程
二、配置pom
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jh</groupId>
<artifactId>TestSpringCloudWeb</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>TestSpringCloud1 Maven Webapp</name>
<url>http://maven.apache.org</url>
<!--父 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.3.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 1 jsp servlet jstl -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--2 spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<!-- 3 spring boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
</dependencies>
<!--版本管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>TestSpringCloudWeb</finalName>
</build>
</project>
三、写主程序(com.jh.Test.java)
//spring boot 应用程序
@SpringBootApplication
public class Test {
public static void main(String[] args) {
//
SpringApplication.run(Test.class, args);
}
}
四、写控制器(UserController)
//控制器
@Controller
public class UserController {
//1映射
@RequestMapping("/getUserName")
public String getUserName()
{
//2跳转
return "succuss";
}
}
五、编写配置文件 src/main/resources/application.properties
#服务器端口
server.port=8081
#server.context-path=/test
六、启动服务Test,测试
http://localhost:8081/getUserName
结果 jwg
七、代码工程:
/proj/TestSpringbootWeb(1controller简单实用)
第三章、 springboot 使用jsp做视图
在 springboot 中实现控制器跳转到jsp网页与单纯的 springMvc有些不同
具体情况通过一个案例来演示
案例:springboot实现控制器跳转到jsp(springMvc+普通跳转)
一、准备:
1 创建工程;
2 、配置pom ;
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jh</groupId>
<artifactId>TestSpringCloudWeb</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>TestSpringCloud1 Maven Webapp</name>
<url>http://maven.apache.org</url>
<!--父 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.3.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 1 jsp servlet jstl -->
<!-- <dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency> -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--2 spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<!-- 3 spring boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<!--4 mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!-- 5 tomcat 不启动会报错 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- <dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency> -->
</dependencies>
<!--版本管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>TestSpringCloudWeb</finalName>
</build>
</project>
3、写主要程序;
//spring boot 应用程序
@SpringBootApplication
public class Test {
public static void main(String[] args) {
//
SpringApplication.run(Test.class, args);
}
}
二、编写 控制器
//控制器
@Controller
public class CategoryController {
//1 映射
@RequestMapping("/getCategoryList")
public String getCategoryList(Model map) {
Category c1 = new Category();
c1.setId(1);
c1.setName("c语言");
Category c2 = new Category();
c2.setId(2);
c2.setName("java语言");
List<Category> list = new ArrayList<Category>();//列表
list.add(c1);
list.add(c2);
//2参数传递
map.addAttribute("categoryList",list);
//3跳转
return "success";
}
}
三 、编写配置文件application.properties
#服务器端口
server.port=8081
#server.context-path=/test
//关键
#jsp
# 配置jsp文件的位置,默认位置为:src/main/webapp
spring.mvc.view.prefix=/
# 配置jsp文件的后缀
spring.mvc.view.suffix=.jsp //关键点
四、编写跳转页面
Success.js
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"%>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
<%@ page import="java.util.*,com.jh.entity.Category"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- jstl+el表达式 -->
<c:forEach items="${categoryList}" var="category">
${category.id} <br>
${category.name }<br>
${category.description} <br>
</c:forEach>
<%-- <%
//jsp形式显示,成功
List<Category> list=(List<Category>)request.getAttribute("categoryList");
out.println( list.size()+" "+list.get(0).getName());
%> --%>
</body>
</html>
五、测试
http://localhost:8081:/getCategoryList
六代码工程: proj/TestSpringbootWeb(2控制器实现跳转jsp页面)
第四章:springboot 使用jdbc访问数据库
本章主要实现springBoot 中实现对mysql数据库的访问.通过一个实际案例说明.
案例 spring boot用jdbc访问数据库
一、 建立数据库
/*
SQLyog Ultimate v11.24 (32 bit)
MySQL - 5.6.26-log : Database - springboot
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`springboot` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `springboot`;
/*Table structure for table `artiche` */
DROP TABLE IF EXISTS `artiche`;
CREATE TABLE `artiche` (
`id` bigint(11) DEFAULT NULL,
`title` varchar(200) DEFAULT NULL,
`path` varchar(500) DEFAULT NULL COMMENT '文章存放路径',
`categoryId` bigint(11) DEFAULT NULL,
`createDate` datetime DEFAULT NULL,
`modifyDate` datetime DEFAULT NULL,
`userId` bigint(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `artiche` */
/*Table structure for table `category` */
DROP TABLE IF EXISTS `category`;
CREATE TABLE `category` (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`desc` varchar(500) DEFAULT NULL,
`parentId` bigint(11) DEFAULT NULL,
KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
/*Data for the table `category` */
insert into `category`(`id`,`name`,`desc`,`parentId`) values (1,'java基础','java基础',0),(2,'java Web','java Web',0),(3,'java 框架 ','java 框架 ',0);
/*Table structure for table `comment` */
DROP TABLE IF EXISTS `comment`;
CREATE TABLE `comment` (
`id` bigint(20) DEFAULT NULL,
`content` varchar(500) DEFAULT NULL,
`useId` bigint(20) DEFAULT NULL COMMENT '用户',
`articheId` bigint(20) DEFAULT NULL COMMENT '文章',
`createDate` bigint(20) DEFAULT NULL COMMENT '时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `comment` */
/*Table structure for table `user` */
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`birthday` datetime DEFAULT NULL,
`createDate` datetime DEFAULT NULL,
KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
/*Data for the table `user` */
insert into `user`(`id`,`name`,`password`,`age`,`birthday`,`createDate`) values (1,'admin','admin',30,NULL,NULL),(2,'jwg1','jwg1',27,NULL,NULL),(3,'jwg2','jwg2',27,NULL,NULL);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
二、准备(工程+pom.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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jh</groupId>
<artifactId>TestSpringCloudWeb</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>TestSpringCloud1 Maven Webapp</name>
<url>http://maven.apache.org</url>
<!--父 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.3.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 1 jsp servlet jstl -->
<!-- <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId>
<version>2.1</version> <scope>provided</scope> </dependency> -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--2 spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<!-- 3 spring boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<!--4 mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!-- 5 tomcat 不启动会报错 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- <dependency> <groupId>org.glassfish.web</groupId> <artifactId>el-impl</artifactId>
<version>2.2</version> </dependency> -->
<!-- 6 spring boot 开发模式 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 表示依赖不会传递 -->
</dependency>
<!--7 spring boot 访问数据库 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- jdbc springjdbc springtx tomcat-jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
<!--版本管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>TestSpringCloudWeb</finalName>
<!-- -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
</configuration>
</plugin>
</plugins>
</build>
</project>
编写主要程序
三、编写配置文件application.properties
#服务器端口
server.port=8081
#server.context-path=/test
#2 jsp跳转
# 配置jsp文件的位置,默认位置为:src/main/webapp
spring.mvc.view.prefix=/
# 配置jsp文件的后缀
spring.mvc.view.suffix=.jsp
#3 jdbc 访问数据库
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
四、创建实体类
public class User {
private Long id;
private String name;
private String password;
private int age ;
private Date birthday;
private Date createDate; //创建日期
get set …略
}
五、服务层接口,服务层实现
(1)服务层接口
public interface UserService {
/**
* 获取用户列表
* @return
*/
public List<User> getUserList();
}
(2)实现接口
@Service
public class UserServiceImpl implements UserService {
// 直接注入使用
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public List<User> getUserList() {
// TODO Auto-generated method stub
String sql = "select * from user";
//返回列表 查询数据 并封装成对象列表
return (List<User>)jdbcTemplate.query(sql, new RowMapper<User>() {
@Override
public User mapRow(ResultSet rs, int arg1) throws SQLException {
// TODO Auto-generated method stub
//
User user = new User();
//获取数据填充
user.setId(rs.getLong("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
user.setAge(rs.getInt("age"));
user.setBirthday(rs.getDate("birthday"));
user.setCreateDate(rs.getDate("createDate"));
return user;
}
});
}
}
六、写控制层
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/getUserList")
public List<User> getUserList()
{
//调用服务层获取数据
List<User> list=userService.getUserList();
return list;
}
}
七、测试
(1)直接测试
(2) 用jsp测试
1 在工程webapp下创建testDb.js
写入下列 内容
<a href="/getUserList">测试获取数据库用户 表</a>
2 打开浏览器输入
http://localhost:8081/testDb.jsp
点击看到效果
八、代码工程:见/proj/ TestSpringbootWeb(4 jdbc访问mysql)
第五章、springboot 集成 mybatis
Springboot 集成mybatis比较简单,但步骤繁多,具体情况通过一个案例解决。
案例5:spring boot 与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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jh</groupId>
<artifactId>TestSpringCloudWeb</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>TestSpringCloud1 Maven Webapp</name>
<url>http://maven.apache.org</url>
<!--父 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.3.RELEASE</version>
<relativePath />
</parent>
<!--属性 -->
<properties>
<mybatis.version>3.4.2</mybatis.version>
</properties>
<dependencies>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 1 jsp servlet jstl -->
<!-- <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId>
<version>2.1</version> <scope>provided</scope> </dependency> -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--2 spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<!-- 3 spring boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<!--4 mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!-- 5 tomcat 不启动会报错 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- <dependency> <groupId>org.glassfish.web</groupId> <artifactId>el-impl</artifactId>
<version>2.2</version> </dependency> -->
<!-- 6 spring boot 开发模式 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 表示依赖不会传递 -->
</dependency>
<!--7 spring boot 访问数据库 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- jdbc springjdbc springtx tomcat-jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mybatis spring boot mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!-- 数据源 -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<!-- 版本号可以不用指定,Spring Boot会选用合适的版本 -->
</dependency>
</dependencies>
<!--版本管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>TestSpringCloudWeb</finalName>
<!-- -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
</configuration>
</plugin>
</plugins>
</build>
</project>
创建主程序
@SpringBootApplication
//扫描mapper类
@MapperScan("com.jh.dao") //1关键,否则报错
public class Test {
public static void main(String[] args) {
SpringApplication.run(Test.class, args);
}
}
二、创建用户接口UserDao(不是类)和对应的UserMapper.xml文件
定义相关方法,注意方法名称要和Mapper.xml文件中的id一致,这样会自动对应上
(1)接口
public interface UserDao {
public List<User> getUserList();
}
(2)创建UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//http://mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jh.dao.UserDao">
<!-- 获取用户列表 -->
<select id="getUserList" resultType="User">
select * from user
</select>
</mapper>
三、配置application.properties
#3 jdbc 访问数据库
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#4 mybatis 扫描 mapper和 配置别名
#mybatis.config-location=classpath:mybatis-config.xml
mybatis.mapper-locations=classpath:com/jh/dao/*Mapper.xml
mybatis.type-aliases-package=com.jh.entity
四 服务层接口和实现
接口:
public interface UserService {
/**
* 获取用户列表
* @return
*/
public List<User> getUserList();
}
接口实现:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List<User> getUserList() {
// TODO Auto-generated method stub
return userDao.getUserList(); // 获取用户列表
}
}
五、控制层
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/getUserList")
public List<User> getUserList()
{
//调用服务层获取数据
List<User> list=userService.getUserList();
return list;
}
}
六、测试
http://localhost:8081/getUserList
七、代码工程:/proj/5 spring boot 集成mybatis
第六章、springboot 事务控制
配置步骤
1首先使用注解 @EnableTransactionManagement 开启事务支持后
2然后在访问数据库的Service方法上添加注解 @Transactional 便可。
具体情况通过一个案例解决.
案例:创建springboot 工程,实现对用户的添加(要求mybatis+spring+springMvc+事务控制)
一、准备
创建工程
配置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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jh</groupId>
<artifactId>TestSpringCloudWeb</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>TestSpringCloud1 Maven Webapp</name>
<url>http://maven.apache.org</url>
<!--父 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.3.RELEASE</version>
<relativePath />
</parent>
<!--属性 -->
<properties>
<mybatis.version>3.4.2</mybatis.version>
</properties>
<dependencies>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 1 jsp servlet jstl -->
<!-- <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId>
<version>2.1</version> <scope>provided</scope> </dependency> -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--2 spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<!-- 3 spring boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<!--4 mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!-- 5 tomcat 不启动会报错 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- <dependency> <groupId>org.glassfish.web</groupId> <artifactId>el-impl</artifactId>
<version>2.2</version> </dependency> -->
<!-- 6 spring boot 开发模式 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 表示依赖不会传递 -->
</dependency>
<!--7 spring boot 访问数据库 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- jdbc springjdbc springtx tomcat-jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mybatis spring boot mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!-- 数据源 -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<!-- 版本号可以不用指定,Spring Boot会选用合适的版本 -->
</dependency>
</dependencies>
<!--版本管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>TestSpringCloudWeb</finalName>
<!-- -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
</configuration>
</plugin>
</plugins>
</build>
</project>
写主程序
//spring boot 应用程序
@SpringBootApplication
//扫描mapper类
@MapperScan("com.jh.dao")
@EnableTransactionManagement //开启事务管理器
public class Test {
public static void main(String[] args) {
SpringApplication.run(Test.class, args);
}
}
二、编写 UserDao.java接口和UserMapper.xml
1接口:
public interface UserDao {
public List<User> getUserList();
/**
* 增加用户
* @param user
*/
public int addUser(User user);
}
2 UserMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//http://mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jh.dao.UserDao">
<!-- 添加用户 -->
<insert id="addUser" parameterType="User">
insert into user(name,password,age,birthday,createDate)
values(#{name},#{password},#{age},#{birthday},#{createDate})
</insert>
</mapper>
三、写UserService 接口和实现类
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
//添加事务
@Transactional
public int addUser(User user) {
userDao.addUser(user);
}
}
四、写控制层
/**
* 添加用户
*/
@RequestMapping("/addUser")
public int addUser()
{
User user=new User();
user.setName("jwg3");
user.setCreateDate(new Date());
userService.addUser(user); //添加用用户
}
五、测试
1 正常
2 非正常 ,在服务层人为产生异常加上
// 添加事务
@Transactional
@Override
public int addUser(User user) {
// TODO Auto-generated method stub
int result;
result = userDao.addUser(user);
int i=3/0; //产生异常
return result;
}
测试:
到数据库查看User 表
没有添加记录 ,说明成功
六、代码工程:/proj/TestSpringbootWeb(6 事务控制)
第七章:总结:
经过前面6章节的学习,基本能运用 spring 进行基于SSM的开发,由于时间有限,就写这里,但springboot 内容远不止这些,以后的内容需要大家自己去挖掘。
springboot springmvc mybatis_深圳嘉华学校之springboot实战教程相关推荐
- hadoop使用mapreduce统计词频_深圳嘉华学校之Hadoop简介(什么是Map-Reduce-Mapreduce-about云开发)...
Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰 ...
- 北大青鸟深圳嘉华学校分享Hibernate查询
1.Hibernate查询方式 1.get|load(class,id):OID查询 2.HQL(Hibernate Query Lanage):HQL查询 3.QBC(Query By Criter ...
- 北大青鸟深圳嘉华学校分享Hibernate关联映射
关联映射: 1.关于n:1 使用emp和dept进行举例 单项多对一: emp: entity:+private Dept dept: hbm.xml:+ dept无需修改 双向一对多:emp:ent ...
- SQL 登录注入脚本_深圳嘉华学校之SQL 注入
SQL Server 2005 联机丛书 SQL Injection 是一种攻击方法,它可以将恶意代码插入到以后将传递给 SQL Server 供分析和执行的字符串中.任何构成 SQL 语句的过程都应 ...
- action请求_深圳嘉华学校之Action方法返回类型
Action方法返回类型 . Action方法返回类型 . Void . 简单或复杂类型 . HttpResponseMessage . IHttpActionResult . 自定义返回类型 在前面 ...
- SpringBoot整合Shiro实现权限管理,经典实战教程
String username = authenticationToken.getPrincipal().toString(); if(!username.equals("zhang&quo ...
- Java项目:嘟嘟图片展览馆管理系统(java+Springboot+SpringMVC+JPA+Jsp+maven+mysql)
源码获取:博客首页 "资源" 里下载! 一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclisp ...
- springboot springmvc 抛出全局异常解决方法
springboot springmvc 抛出全局异常解决方法 参考文章: (1)springboot springmvc 抛出全局异常解决方法 (2)https://www.cnblogs.com/ ...
- 【Java从0到架构师】SpringBoot - SpringMVC
SpringBoot - SpringMVC SpringMVC 的配置 文件上传功能 文件下载 - 以附件形式下载 静态资源访问 静态资源访问 - 映射 静态资源访问 - webjars Java ...
最新文章
- snowflake算法 php,PHP实现Snowflake生成分布式唯一ID的方法示例
- java文件的相对路径_java中使用相对路径读取文件的写法总结 ,以及getResourceAsStream() (转)...
- 计算机二级web前端,web前端:原生js之Math对象
- 八城联动丨神策 2020 数据驱动用户大会「上海场」10 月 23 日如期而至!
- [转载]学习数据库分表和分库思想
- Wpf TextChanged事件导致死循环,事件触发循环问题
- 一张图解决Android Studio 项目运行按钮灰色
- 【渝粤题库】广东开放大学 跨文化商务沟通 形成性考核
- [vue] 请描述下vue的生命周期是什么?
- 2135亿!2018 双11阿里数据库技术战报新鲜出炉
- 让input标签的range属性显示数值
- JavaScript 条件语句和循环语句
- 淘宝分布式NOSQL框架:Tair
- Mapreduce的分区—Partitioner
- CISSP 认证的 12 部优秀 CISSP 书籍和学习指南+学习网站
- Word无法打开该文件,因为文件格式与文件扩展名不匹配。Microsoft Word无法从该位置打开扩展名为.asd的文件。请将此文件移动到原始.asd位置,然后重试。
- AUTOSAR架构软件结构简介
- 山西初中计算机,山西初中信息技术教学计划
- 【数据库原理及应用】——数据库设计(学习笔记)
- node.js使用手册_权威的Node.js手册
热门文章
- 图像处理五:python读取图片的几种方式
- 贺利坚老师汇编课程52笔记:汇编语言模块化程序设计
- 获取虚拟账号列表失败啥意思_「图」Windows 10 Build 18963发布:可显GPU温度 支持重命名虚拟桌面...
- Java入门第37课——猜字母游戏之设计数据结构
- Mysql中autocommit的用法
- 获取Oracle隐含參数信息
- MyEclipse Web 项目导入 Eclipse 中需要改的文件
- ASCII、Unicode、GBK和UTF-8字符编码的区别联系(转载)
- [转贴]SQL2005数据类型
- [转载] python strptime函数转时间数组_python—时间与时间戳之间的转换