1、使用Idea创建spring boot工程的博客

https://www.cnblogs.com/black-spike/p/8017768.html

2、本篇博客参考网址

https://blog.csdn.net/supervictim/article/details/54582083

3、整个工程的目录文件如下

4、在pom.xml配置文件中添加springboot依赖

<?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>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>demo</name>
<description>Demo project for Spring Boot</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from dao -->
</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> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency> <dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

5、application.properties配置文件

# 定位模板的目录
spring.mvc.view.prefix=classpath:/templates/
# 给返回的页面添加后缀名
spring.mvc.view.suffix=.html spring.datasource.url = jdbc:mysql://localhost:3306/db_tosys
spring.datasource.username = root
spring.datasource.password = password
spring.datasource.driverClassName = com.mysql.jdbc.Driver
# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update
# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

6、以上的pom.xml和application.properties,添加了springboot和thymeleaf依赖,以下查看SpringMvc实例

package com.example.demo.controller;

import com.example.demo.entity.Flight;
import com.example.demo.dao.FlightDao;
import com.example.demo.utils.DateJsonValueProcessor;
import com.example.demo.utils.ResponseUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletResponse;
import java.util.List; @Controller
@RequestMapping("/flight")
public class FlightController { private static final String format = "yyyy-MM-dd HH:mm:ss"; @Autowired
private FlightDao flightDao; @RequestMapping("/index")
public String index(){
return "flightList";
} @RequestMapping("/list")
@ResponseBody
public String list(HttpServletResponse response) throws Exception {
List<Flight> list = flightDao.getList();
int count = flightDao.getCount();
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor(format));
JSONArray rows = JSONArray.fromObject(list, jsonConfig);
JSONObject result = new JSONObject();
result.put("rows", rows);
result.put("total", count);
ResponseUtil.write(response, result);
return null;
}
}

7、thymeleaf模板如下,flightList.html(备注:里面的thymeleay模板必须创建在resource文件夹下面的templates文件夹下面,若此文件夹不存在则自行创建,以下之是显示列表显示部分字段)

<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<html>
<head>
<title>获得Flight信息列表</title> <link th:href="@{/jquery-easyui-1.5.3/themes/default/easyui.css}" rel="stylesheet"/>
<link th:href="@{/jquery-easyui-1.5.3/themes/icon.css}" rel="stylesheet"/> <script th:src="@{/jquery-easyui-1.5.3/jquery.min.js}"></script>
<script th:src="@{/jquery-easyui-1.5.3/jquery.easyui.min.js}"></script>
<script th:src="@{/jquery-easyui-1.5.3/locale/easyui-lang-zh_CN.js}"></script> </head>
<body style="margin:1px;">
<table id="dg" class="easyui-datagrid" title="航班信息列表" style="height:500px" data-options="
fit:true,
rownumbers:true,
autoRowHeight:true,
pagination:true,
SingleSelect:false,
pageSize:20,
pageList: [20, 30, 50],
url:'/flight/list',
method:'get',
toolbar:'#tb'">
<thead>
<tr>
<th field="cb" checkbox="true" align="center"></th>
<th field="id" width="50" align="center">编号</th>
<th field="name" width="150" align="center">航班名称</th>
<th field="flighttype" width="100" align="center">航班类型</th>
<th field="fromcity" width="100" align="center">出发城市</th>
<th field="tocity" width="100" align="center">目的城市</th>
<th field="fromtime" width="150" align="center">出发时间</th>
<th field="totime" width="150" align="center">到点时间</th>
</tr>
</thead>
</table>
<div id="tb">
<div>
<a href="javascript:openFlightAddDialog()" class="easyui-linkbutton" iconCls="icon-add" plain="true">添加</a>
<a href="javascript:openFlightModifyDialog()" class="easyui-linkbutton" iconCls="icon-edit" plain="true">修改</a>
<a href="javascript:deleteFlight()" class="easyui-linkbutton" iconCls="icon-remove" plain="true">删除</a>
</div>
<div>
&nbsp;航班名称:<input type="text" id="s_flightName" style="width: 100px"
onkeydown="if(event.keyCode==13) searchFlight()"/>
&nbsp;出发地点:<input type="text" id="s_fromCity" style="width: 100px"
onkeydown="if(event.keyCode==13) searchFlight()"/>
&nbsp;到达地点:<input type="text" id="s_toCity" style="width: 100px"
onkeydown="if(event.keyCode==13) searchFlight()"/>
&nbsp;出发日期:<input type="text" id="s_fromTime" class="easyui-datebox" style="width: 100px"
onkeydown="if(event.keyCode==13) searchFlight()"/>
<a href="javascript:searchFlight()" class="easyui-linkbutton" iconCls="icon-search" plain="true">搜索</a>
</div>
</div> <div id="dlg" class="easyui-dialog" style="width: 700px;height:350px;padding: 10px 20px"
closed="true" buttons="#dlg-buttons">
<form id="fm" method="post">
<table cellspacing="8px">
<tr>
<td>航班名称:</td>
<td><input type="text" id="name" name="flight.name" class="easyui-validatebox" required="true"/></td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>航班类型:</td>
<td>
<select class="easyui-combobox" id="flightType" name="flight.flightType" style="width: 154px;"
editable="false" panelHeight="auto">
<option value="">请选择性别</option>
<option value="国内航班">国内航班</option>
<option value="国际航班">国际航班</option>
</select>
</td>
</tr>
<tr>
<td>出发地点:</td>
<td><input type="text" id="fromCity" name="flight.fromCity" class="easyui-validatebox" required="true"/>
</td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>出发时间:</td>
<td><input type="text" id="fromTime" name="flight.fromTime" class="easyui-datetimebox" required="true"/>
</td>
</tr>
<tr>
<td>到达地点:</td>
<td><input type="text" id="toCity" name="flight.toCity" class="easyui-validatebox" required="true"/>
</td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>到达时间:</td>
<td><input type="text" id="toTime" name="flight.toTime" class="easyui-datetimebox" required="true"/>
</td>
</tr>
<tr>
<td>经济舱票价:</td>
<td><input type="text" id="ecPrice" name="flight.ecPrice" class="easyui-validatebox" required="true"/>
</td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>(经济舱)座位数:</td>
<td><input type="text" id="ecTicketTotal" name="flight.ecTicketTotal" class="easyui-numberbox"
required="true"/></td>
</tr>
<tr>
<td>头等舱票价:</td>
<td><input type="text" id="fcPrice" name="flight.fcPrice" class="easyui-validatebox" required="true"/>
</td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>(头等舱)座位数:</td>
<td><input type="text" id="fcTicketTotal" name="flight.fcTicketTotal" class="easyui-numberbox"
required="true"/></td>
</tr>
<tr>
<td>使用客机:</td>
<td colspan="4">
<input class="easyui-combobox" id="aircraft" name="flight.aircraft.id"
data-options="panelHeight:'auto',editable:false,valueField:'id',textField:'name',url:'aircraft_comboList.action'"/>
</td>
</tr>
</table>
</form>
</div> <div id="dlg-buttons">
<a href="javascript:saveFlight()" class="easyui-linkbutton" iconCls="icon-ok">保存</a>
<a href="javascript:closeFlightDialog()" class="easyui-linkbutton" iconCls="icon-cancel">关闭</a>
</div>
<script type="text/javascript"> function searchFlight() {
$("#dg").datagrid('load', {
"s_flight.name": $("#s_flightName").val(),
"s_flight.fromCity": $("#s_fromCity").val(),
"s_flight.toCity": $("#s_toCity").val(),
"s_flight.fromTime": $("#s_fromTime").datebox("getValue")
});
} </script>
</body>
</html>

8、为mian方法添加一些注解

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @SpringBootApplication
@EnableJpaRepositories(basePackages = "com.example.demo.dao")
@EntityScan(basePackages = "com.example.demo")
public class DemoApplication { public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

9、接下来创建实体层(entity,备注:字段全小写,若是驼峰式命名,查询结果可能出现问题)

package com.example.demo.entity;

import javax.persistence.*;
import java.util.Date; @Entity
@Table(name="t_flight")
public class Flight { @Id
@GeneratedValue(strategy= GenerationType.AUTO)
private int id;
private String name;
private String fromcity;
private String tocity;
private Date fromtime;
private Date totime;
private int ecprice;
private int fcprice;
private int ectickettotal;
private int fctickettotal;
private int ecticketremain;
private int fcticketremain;
private String flighttype; 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 String getFromcity() {
return fromcity;
} public void setFromcity(String fromcity) {
this.fromcity = fromcity;
} public String getTocity() {
return tocity;
} public void setTocity(String tocity) {
this.tocity = tocity;
} public Date getFromtime() {
return fromtime;
} public void setFromtime(Date fromtime) {
this.fromtime = fromtime;
} public Date getTotime() {
return totime;
} public void setTotime(Date totime) {
this.totime = totime;
} public int getEcprice() {
return ecprice;
} public void setEcprice(int ecprice) {
this.ecprice = ecprice;
} public int getFcprice() {
return fcprice;
} public void setFcprice(int fcprice) {
this.fcprice = fcprice;
} public int getEctickettotal() {
return ectickettotal;
} public void setEctickettotal(int ectickettotal) {
this.ectickettotal = ectickettotal;
} public int getFctickettotal() {
return fctickettotal;
} public void setFctickettotal(int fctickettotal) {
this.fctickettotal = fctickettotal;
} public int getEcticketremain() {
return ecticketremain;
} public void setEcticketremain(int ecticketremain) {
this.ecticketremain = ecticketremain;
} public int getFcticketremain() {
return fcticketremain;
} public void setFcticketremain(int fcticketremain) {
this.fcticketremain = fcticketremain;
} public String getFlighttype() {
return flighttype;
} public void setFlighttype(String flighttype) {
this.flighttype = flighttype;
}
}

10、创建dao层(注:此处创建一个FlightDao的接口,并不需要创建FlightDao的实现,springboot默认会帮我们实现,继承CruReposity,@Param代表的是sql语句中的占位符)

package com.example.demo.dao;

import com.example.demo.entity.Flight;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository; import java.util.List; public interface FlightDao extends CrudRepository<Flight,Long> { @Query("select count(f) from Flight as f")
int getCount(); @Query("select f FROM Flight f")
List<Flight> getList(); //@Param代表的是sql语句中的占位符,例如这里的@Param(“name”)代表的是:name占位符。
/* @Query("select t from User t where t.userName=:name")
public User findUserByName(@Param("name") String name);*/
}

11、List列表结果集中时间(date)的工具类(DateJsonValueProcessor.java)

package com.example.demo.utils;

import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
import java.text.SimpleDateFormat; public class DateJsonValueProcessor implements JsonValueProcessor { private String format; public DateJsonValueProcessor(String format) {
this.format = format;
} public Object processArrayValue(Object value, JsonConfig jsonConfig) {
return null;
} public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
if (value == null) {
return "";
}
if (value instanceof java.sql.Timestamp) {
String str = new SimpleDateFormat(format).format((java.sql.Timestamp) value);
return str;
}
if (value instanceof java.util.Date) {
String str = new SimpleDateFormat(format).format((java.util.Date) value);
return str;
}
return value.toString();
}
}

12、返回Json数据类型至页面的工具类(ResponseUtil.java)

package com.example.demo.utils;

import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter; public class ResponseUtil { public static void write(HttpServletResponse response, Object o)
throws Exception {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println(o.toString());
out.flush();
out.close();
}
}

Spring boot + Jpa + Maven + Mysql 初级整合的更多相关文章

  1. Spring Boot+Jpa(MYSQL)做一个登陆注册系统(前后端数据库一站式编程)

    Spring Boot最好的学习方法就是实战训练,今天我们用很短的时间启动我们第一个Spring Boot应用,并且连接我们的MySQL数据库. 我将假设读者为几乎零基础,在实战讲解中会渗透Sprin ...

  2. Spring boot jpa 设定MySQL数据库的自增ID主键值

    内容简介 本文主要介绍在使用jpa向数据库添加数据时,如果表中主键为自增ID,对应实体类的设定方法. 实现步骤 只需要在自增主键上添加@GeneratedValue注解就可以实现自增,如下图: 关键代 ...

  3. Spring Boot使用Spring Data Jpa对MySQL数据库进行CRUD操作

    只需两步!Eclipse+Maven快速构建第一个Spring Boot项目 构建了第一个Spring Boot项目. Spring Boot连接MySQL数据库 连接了MySQL数据库. 本文在之前 ...

  4. Spring Boot (五)Spring Data JPA 操作 MySQL 8

    一.Spring Data JPA 介绍 JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Sprin ...

  5. Spring Boot(五):Spring Boot Jpa 的使用

    在上篇文章Spring Boot(二):Web 综合开发中简单介绍了一下 Spring Boot Jpa 的基础性使用,这篇文章将更加全面的介绍 Spring Boot Jpa 常见用法以及注意事项. ...

  6. Spring Boot Jpa 的使用

    Spring Boot Jpa 介绍 首先了解 Jpa 是什么? Jpa (Java Persistence API) 是 Sun 官方提出的 Java 持久化规范.它为 Java 开发人员提供了一种 ...

  7. (转)Spring Boot(五):Spring Boot Jpa 的使用

    http://www.ityouknow.com/springboot/2016/08/20/spring-boot-jpa.html 在上篇文章Spring Boot(二):Web 综合开发中简单介 ...

  8. Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结

    Spring Boot + MyBatis + Druid + Redis + Thymeleaf 整合小结 这两天闲着没事想利用**Spring Boot**加上阿里的开源数据连接池**Druid* ...

  9. Spring Boot Jpa 表名小写转大写

    今天在使用SpringBoot整合Hibernate后创建表,表名为小写,而在linux下,mysql的表名是区分大小写的,因此在我的数据表中,就出现了两个一样的表 act_id_user 和  AC ...

随机推荐

  1. Luogu P2146 [NOI2015]软件包管理器 树剖

    卸载:把子树清空: 安装:把自己到$1$的链改为$1$ #include<cstdio> #include<iostream> #include<cstring> ...

  2. vue项目实现详情页后退缓存之前的数据

    vue项目实现详情页后退缓存之前的数据 2019年02月19日 14:54:57 不想写代码的程序员 阅读数:244   一.需要缓存的内容: 1.后退缓存条件查询的数据 2.后退缓存分页信息 二.实 ...

  3. hdu 5514 Frogs 容斥思想+gcd 银牌题

    Frogs Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  4. 【luoguP2483】k短路([SDOI2010]魔法猪学院)

    题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...

  5. 【线性代数】1-1:线性组合(Linear Combinations)

    title: [线性代数]1-1:线性组合(Linear Combinations) toc: true categories: Mathematic Linear Algebra date: 201 ...

  6. Win10 下载 masmplus

    一.下载: masmplus链接: http://www.aogosoft.com/masmplus/

  7. 什么是挂载?mount的用处在哪?

    关于挂载的作用一直不是很清楚,今天在阅读教材时看见了mount这个命令,发现它的用处很隐晦但非常强大.奈何教材说的不明朗,因此在网上整合了一些优秀的解释,看完之后豁然开朗. 1.提一句Windows下 ...

  8. CoreText学习(二)之Hello world

    最后更新:2017-08-10 部分内容丢失,后续补上 相关配置: Xcode 8.3.3 Swift 3.0 macOS Sierra 一.CoreText 简介 CoreText 是用于处理文字和 ...

  9. Netfilter 之 钩子函数注册

    通过注册流程代码的分析,能够明确钩子函数的注册流程,理解存储钩子函数的数据结构,如下图(点击图片可查看原图): 废话不多说,开始分析: nf_hook_ops是注册的钩子函数的核心结构,字段含义如下所 ...

  10. 带有时间间隔的dp

    Uberwatch 题意:一个人打一群敌人,每间隔时间m能释放一次大招,消灭这个时刻上的所有敌人,起始时刻开始计算冷却时间 solution: dp[i]=max(dp[i],dp[i-m]); /* ...