spring boot实现ssm(2)功能
spring 和 mybatis 整合的那篇: ssm(2) . 配置文件比ssm(1) 更多, 在做项目的时候, 配置文件是一个让人头大的事情.
那么在spring boot中, 实现相同功能, 需不需要做那么多配置呢.
一. 从pom.xml 开始
<?xml version="1.0" encoding="UTF-8"?>
<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>org.elvin</groupId>
<artifactId>boot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>boot</name>
<description>Demo project for Spring Boot</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <!--view : thymeleaf模板-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency> <!--db : 数据库相关-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency> <!--tools : joda-time-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.6</version>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>
pom.xml文件, 直观的感觉, 就是非常的短, 非常的少. 简洁
二. 配置文件
#配置项目端口和根路径
server:
port: 8080
context-path: /boot spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql:///test?useUnicode=true&characterEncoding=utf-8
username: root
password: root
jpa:
hibernate:
ddl-auto: update
show-sql: true
thymeleaf:
cache: false
logging:
level: warn
file: ./boot.log
三. 实体类
package org.elvin.boot.pojo; import javax.persistence.*; /**
* author: Elvin
* Date: 2017/12/4 15:37
* Description:
*/
@Entity
@Table(name="book")
public class Book { @Id
@GeneratedValue
private Integer id; private String name; private String publishTime; private Integer price; @Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", publishTime='" + publishTime + '\'' +
", price=" + price +
'}';
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPublishTime() {
return publishTime;
} public void setPublishTime(String publishTime) {
this.publishTime = publishTime;
} public Integer getPrice() {
return price;
} public void setPrice(Integer price) {
this.price = price;
}
}
通过注解, 可以映射到数据中的表. 由于在前面设置了 ddl-auto:update , 那么在每次启动的时候, 都会去检测数据库, 是否有这张表, 如果没有, 则会新增, 如果有, 则会修改表.
四. Repository
package org.elvin.boot.repository; import org.elvin.boot.pojo.Book;
import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; /**
* author: Elvin
* Date: 2017/12/5 16:58
* Description:
*/
public interface BookRepository extends JpaRepository<Book, Integer> {
/*
@Query()
public Page<Book> myQuery();*/
}
这里使用的并不是 mybatis 的写sql的方式, 但是很大一部分的表操作, jpa 标准 都可以完成, 如果想写自定义sql, 可以通过方法上加 @Query 注解的方式来写.
五. service 和实现类
package org.elvin.boot.service;
import org.elvin.boot.pojo.Book;
import java.util.List;
public interface BookService {
public List<Book> findAll();
public Book findOne(Integer id);
public void put(Book book);
public void remove(Integer id);
}
package org.elvin.boot.serviceimpl; import org.elvin.boot.pojo.Book;
import org.elvin.boot.pojo.PageInfo;
import org.elvin.boot.repository.BookRepository;
import org.elvin.boot.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service; import java.util.List; /**
* author: Elvin
* Date: 2017/12/5 17:03
* Description:
*/
@Service
public class BookServiceImpl implements BookService { @Autowired
private BookRepository bookRepository; @Override
public List<Book> findAll(){
List<Book> list = bookRepository.findAll();
return list;
} @Override
public Book findOne(Integer id){
Book book = bookRepository.findOne(id);
return book;
} @Override
public void put(Book book) {
bookRepository.save(book);
} @Override
public void remove(Integer id) {
bookRepository.delete(id);
} }
put在这里, 承担 新增 和 修改 的责任. 不管是新增还是修改, 都是调用的 jpa的save方法.
区别在于, 是否传入了id.
没有传id -> 直接新增
传入了id -> 根据id进行查询 -> 没有数据 -> 新增
|-> 有数据 -> 修改
六. controller
返回数据格式, 稍微做了一下封装.
package org.elvin.boot.pojo;
public interface ResStatus {
String SUCCESS = "success";
String FAIL = "fail";
String ERROR = "error";
}
package org.elvin.boot.pojo; /**
* author: Elvin
* Date: 2017/12/6 10:40
* Description:
*/
public class ResObj {
private String msg; private Integer Code; private Object obj; public ResObj() {
} public ResObj(String msg, Integer code, Object obj) {
this.msg = msg;
Code = code;
this.obj = obj;
} @Override
public String toString() {
return "ResObj{" +
"msg='" + msg + '\'' +
", Code=" + Code +
", obj=" + obj +
'}';
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} public Integer getCode() {
return Code;
} public void setCode(Integer code) {
Code = code;
} public Object getObj() {
return obj;
} public void setObj(Object obj) {
this.obj = obj;
}
}
再来看controller.
package org.elvin.boot.controller; import org.elvin.boot.pojo.Book;
import org.elvin.boot.pojo.ResObj;
import org.elvin.boot.pojo.ResStatus;
import org.elvin.boot.service.BookService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; /**
* author: Elvin
* Date: 2017/12/6 10:36
* Description:
*/
@RestController
@RequestMapping("third")
public class ThirdController { private Logger logger = LoggerFactory.getLogger(ThirdController.class); @Autowired
private BookService bookService; @PostMapping("put")
public ResObj put(Book book){
ResObj res = new ResObj(ResStatus.FAIL, 0, null);
try{
bookService.put(book);
res.setMsg(ResStatus.SUCCESS);
res.setCode(1);
res.setObj(book);
}
catch (Exception e){
logger.error(e.getMessage());
} return res;
} @PostMapping("delete/{id}")
public ResObj delete(@PathVariable Integer id){
ResObj res = new ResObj(ResStatus.FAIL, 0, null);
try{
bookService.remove(id);
res.setMsg(ResStatus.SUCCESS);
res.setCode(1);
}
catch (Exception e){
logger.error(e.getMessage());
} return res;
} @RequestMapping(value = "getAll", method = {RequestMethod.GET, RequestMethod.POST })
public ResObj getAll(){
ResObj res = new ResObj(ResStatus.FAIL, 0, null);
try{
res.setObj(bookService.findAll());
res.setMsg(ResStatus.SUCCESS);
res.setCode(1);
}
catch (Exception e){
logger.error(e.getMessage());
} return res;
} @RequestMapping(value = "getById/{id}", method = {RequestMethod.GET, RequestMethod.POST })
public ResObj getById(@PathVariable Integer id){
ResObj res = new ResObj("fail", 0, null);
try{
res.setObj(bookService.findOne(id));
res.setMsg(ResStatus.SUCCESS);
res.setCode(1); /*int a = 0;
int c = 1 / a;*/
}
catch (Exception e){
logger.error(e.getMessage());
} return res;
}
}
七. 结果


首先新增一条数据, 然后再查询出来, 没有啥问题. 然后调用同样的方法, 修改数据


spring boot实现ssm(2)功能的更多相关文章
- spring boot实现ssm(1)功能
前面完成了ssm的整合, 整个过程可以说很繁杂, 各种配置, 很容易让人晕掉. 这里使用spring boot 的方式来实现ssm(1)中的功能. 一. 建项目 1. 使用 idea 来创建 spri ...
- 自我救赎 → 利用 IDEA 和 Spring Boot 搭建 SSM
前言 开心一刻 儿子读高中放学回来了,一向不管他学习的我突然来了兴趣,想看看他的学习他的状况,抄起他的数学习题看了起来,当看到 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x ...
- spring Boot 简单的登录功能,利用了jdbcTemplate.class完成sql语句的执行,无需service层、dao层和.xml文件
1.搭建SpringBoot项目首先我们先在IDEA上创建一个SpringBoot的Web项目(1)file ——> new ——> project——> Spring Initia ...
- spring boot集成spring-boot-starter-mail邮件功能
前情提要 以目前IT系统功能来看,邮件功能是非常重要的一个功能.例如:找回密码.邮箱验证,邮件动态码.忘记密码,邮件营销等,都需要用到邮件功能.结合当下最流行的spring boot微服务,推出了sp ...
- Spring Boot 实现看门狗功能 (调用 Shell 脚本)
需要实现看门狗功能,定时检测另外一个程序是否在运行,使用 crontab 仅可以实现检测程序是否正在运行,无法做到扩展,如:手动重启.程序升级(如果只需要实现自动升级功能可以使用 inotify)等功 ...
- spring boot 开启Druid监控功能
1.配置yml spring: datasource: # 数据源基本配置 username: song password: 123456 driver-class-name: com.mysql.j ...
- Spring Boot Admin 日志查看功能
按照官方配置POM和配置文件后,能够结合Eureka查看各微服务状态,但是日志始终查看不了,出现406等错误. 最后偶然发现,是在在从官方网站拷贝配置的时候,出现的问题. logging.file=* ...
- [Spring Boot 系列] 集成maven和Spring boot的profile功能
由于项目的需要, 今天给spirng boot项目添加了profile功能.再网上搜索了一圈,也没有找到满意的参考资料,其实配置并不难,就是没有一个one stop(一站式)讲解的地方,所以有了写这篇 ...
- Spring Boot入门(11)实现文件下载功能
在这篇博客中,我们将展示如何在Spring Boot中实现文件的下载功能. 还是遵循笔者写博客的一贯风格,简单又不失详细,实用又能让你学会. 本次建立的Spring Boot项目的主要功能 ...
随机推荐
- python的打开_记录
1. 2.7版本,安装了2.7,可以在命令符里面输入cmd,然后输入python,进入python的工作环境. 2. 3.6版本 ,anaconda版本,在F:\qhpython里边找到python. ...
- 利用阿里大于接口发短信(Delphi版)
阿里大于是阿里通信旗下产品,融合了三大运营商的通信能力,提供包括短信.语音.流量直充.私密专线.店铺手机号等个性化服务.每条四分五,价钱还算公道,经老农测试,响应速度非常快,基本上是秒到.官方文档提供 ...
- 分形之列维(levy)曲线
莱维C形曲线(Lévy C curve)是个自我相似的分形,最先由保罗·皮埃尔·莱维在1938年的论文Plane or Space Curves and Surfaces Consisting of ...
- 关于synchronized和lock 的使用及其在线程间的通信
题目要求:子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次 synchronized的使用 import java.util.conc ...
- ASP.NET Core 2.1 源码学习之 Options[3]:IOptionsMonitor
前面我们讲到 IOptions 和 IOptionsSnapshot,他们两个最大的区别便是前者注册的是单例模式,后者注册的是 Scope 模式.而 IOptionsMonitor 则要求配置源必须是 ...
- MySql字段类型说明
bigint 从 -^ (-) 到 ^- () 的整型数据(所有数字).存储大小为 个字节. P.S. bigint已经有长度了,在mysql建表中的length,只是用于显示的位数 int 从 -^ ...
- PHP程序员职业发展路线
重点:把LNMP搞熟练(核心是安装配置基本操作) 1.Linux: 基本命令.操作.启动.基本服务配置(包括rpm安装文件,各种服务配置等): 会写简单的shell脚本和awk/sed 脚本命令等. ...
- Python大法之告别脚本小子系列—各类URL采集器编写
本文作者:i春秋签约作家——阿甫哥哥 系列文章专辑:https://bbs.ichunqiu.com/forum.php?mod=collection&action=view&ctid ...
- Linux上安装java JDK
yum方式 1.查看yum中的各个版本 yum -y list java* 2.选择一个版本安装(如1.7) yum -y install java-1.7.0-openjdk* 3.安装完成后可查看 ...
- 跟着刚哥深入学maven(通俗易懂)
前言:目前所有的项目都在使用maven,可是一直没有时间去整理学习,这两天正好有时间,好好的整理一下. 一.为什么使用Maven这样的构建工具[why] ① 一个项目就是一个工程 如果项目非常庞大,就 ...