Spring MVC和Spring Data JPA之获取数据表数据放在List集合,显示在JSP页面
涉及到很多xml配置没写:只写具体实现的所有类
1、实体类
对应数据表SYS_SBGL,
主键是SBBM,主键是自动生成的uuid
数据表内容如下(有图有真相):

package com.jinhetech.yogurt.sbgl.entity; import java.io.Serializable; import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator;
import org.springframework.cache.annotation.Cacheable;
@Entity
@Table(name="SYS_SBGL")
@PrimaryKeyJoinColumn(name = "SBBM")
@Cacheable(value = "baseCache")
public class Sbgl implements Serializable{ private static final long serialVersionUID = -1423899016746755470L; //@SequenceGenerator(name = "MY_SUQUENCE", sequenceName = "SEQ_SYS_SBGL") //@GeneratedValue(generator="MY_SUQUENCE")
//@GeneratedValue(generator="system_uuid")
//@GenericGenerator(name="system_uuid", strategy="uuid")
@Id
private String sbbm; private String sbmc;
private String sblx;
private String sssx;
private String ssjd; private String azsj;
private String azry;
private String sbzt;
private String sbjd;
private String sbwd; private String wxlxr;
private String wxlxdh;
private String sbywxcs;
private String jzpylyz;
private String mqsbcyr;
private String bzsm; public String getSbbm() {
return sbbm;
}
public void setSbbm(String sbbm) {
this.sbbm = sbbm;
}
public String getSbmc() {
return sbmc;
}
public void setSbmc(String sbmc) {
this.sbmc = sbmc;
}
public String getSblx() {
return sblx;
}
public void setSblx(String sblx) {
this.sblx = sblx;
}
public String getSssx() {
return sssx;
}
public void setSssx(String sssx) {
this.sssx = sssx;
}
public String getSsjd() {
return ssjd;
}
public void setSsjd(String ssjd) {
this.ssjd = ssjd;
}
public String getAzsj() {
return azsj;
}
public void setAzsj(String azsj) {
this.azsj = azsj;
}
public String getAzry() {
return azry;
}
public void setAzry(String azry) {
this.azry = azry;
}
public String getSbzt() {
return sbzt;
}
public void setSbzt(String sbzt) {
this.sbzt = sbzt;
}
public String getSbjd() {
return sbjd;
}
public void setSbjd(String sbjd) {
this.sbjd = sbjd;
}
public String getSbwd() {
return sbwd;
}
public void setSbwd(String sbwd) {
this.sbwd = sbwd;
}
public String getWxlxr() {
return wxlxr;
}
public void setWxlxr(String wxlxr) {
this.wxlxr = wxlxr;
}
public String getWxlxdh() {
return wxlxdh;
}
public void setWxlxdh(String wxlxdh) {
this.wxlxdh = wxlxdh;
}
public String getSbywxcs() {
return sbywxcs;
}
public void setSbywxcs(String sbywxcs) {
this.sbywxcs = sbywxcs;
}
public String getJzpylyz() {
return jzpylyz;
}
public void setJzpylyz(String jzpylyz) {
this.jzpylyz = jzpylyz;
}
public String getMqsbcyr() {
return mqsbcyr;
}
public void setMqsbcyr(String mqsbcyr) {
this.mqsbcyr = mqsbcyr;
}
public String getBzsm() {
return bzsm;
}
public void setBzsm(String bzsm) {
this.bzsm = bzsm;
} }
2、JSP页面(sbgl_list.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<!doctype html> <c:set var="ctx" value="${pageContext.request.contextPath}" scope="session"/> <html>
<head>
<title>设备管理</title>
<!-- zTree需要的样式和js -->
<link rel="stylesheet" href="${ctx }/yogurtResource/assembly/ztree/css/zTreeStyle.css" type="text/css">
<script type="text/javascript" src="${ctx }/yogurtResource/assembly/ztree/jquery.ztree.core-3.5.js"></script>
<script type="text/javascript" src="${ctx }/yogurtResource/assembly/ztree/jquery.ztree.excheck-3.5.js"></script> <!-- 验证框架 -->
<script type="text/javascript" src="${ctx }/yogurtResource/assembly/yogurt/user/formValidate.js"></script> <!-- 修改表单验证错误提示样式 -->
<style type="text/css">
.table-bordered-ul li{ margin: 5px; float:left}
label.error {
padding-left: 16px; padding-bottom: 2px; font-weight: bold; color: #F00;
}
</style> <script type="text/javascript">
function console(consoleTag, userId, stateTag) {
// 添加用户。
if("add" == consoleTag) {
$('#formid').prop("action", "${ctx}/sbgl/sbgl_add_list");
} } </script> </head> <body>
<div class="clear">
<div class="panel panel-default yogurt_route" id="yogurt_route">
<a href="${ctx }/home/home_list">首页</a> > <a
href="javascript:void(0);" onclick="navigate();">设备管理</a> > 设备列表
</div>
</div> <ul id="bqnum">
<li><a href="javascript:void(0);" onclick="navigate();">导航</a>
</li>
<li><a href="javascript:void(0);" onclick="orgTree();">机构</a>
</li>
</ul> <!-- 根据条件查询 -->
<div class="clear ppd10" style="line-height:32px">
<form action="${ctx }/sbgl/sbgl_list" method="post" id="selForm">
<div style="float:left; width:200px">
设备名称:
<input type="text" name="sbmc" id="sbmc" >
</div>
<div class="floatleft">
设备类型:
<input type="text" name="sblx" id="sblx" >
</div>
<div class="floatleft">
所属市县:
<input type="text" name="sssx" id="sssx" >
</div>
<div class="floatleft">
基地名称:
<input type="text" name="jdmc" id="jdmc" >
</div>
<div class="floatleft">
设备状态:
<select class="form-control" style="display:inline-block; width:80px" name="sbzt" id="sbzt">
<option value="">全部</option>
<option value="Y">正常</option>
<option value="N">异常</option>
</select>
</div>
<button type="submit" class="btn btn-success yogurt_search_button" onclick="search();">
<img src="${ctx }/yogurtResource/images/Panel/search.png" width="" height="" />
</button>
</form>
</div> <!-- 新增、删除 -->
<div class="panel panel-default" style="margin-top:10px">
<div class="yogurt_panel_title_core">
<span class="state_bold">共查询出数据结果:<span class="state_red"></span>条</span>
</div>
<div class="more_core3">
<!-- <button type="button" class="btn btn-success yogurt_search_button2" onclick="console('add','');">新增设备</button> -->
<button type="button" class="btn btn-success yogurt_search_button2" onclick="window.location.href='${ctx }/sbgl/sbgl_add_list' ">新增设备</button>
<button type="button" class="btn btn-success yogurt_search_button2" onclick="console('delete','');">删除设备</button>
</div>
</div>
<!-- 列表 -->
<div class="yogurt_elementsbox_core clear">
<div class="yogurt_elementsbox_table_article" id="yogurt_elementsbox_table_article">
<table id="tableBody" border="" cellspacing="" cellpadding="" class="table yogurt_elementsbox_table">
<thead>
<tr class="yogurt_tab_back" onmouseover="this.className='yogurt_tab_trhover'" onmouseout="this.className='yogurt_tab_back'">
<th width="3%"><input type="checkbox" onClick="allchecked(this)"></th>
<th width="10%">设备名称</th>
<th width="10%">设备类型</th>
<th width="10%">所属市县</th>
<th width="10%">基地名称</th>
<th width="10%">设备状态</th>
<th width="10%">维修联系人</th>
<th width="10%">联系电话</th>
<th width="10%">设备持有人</th>
<th width="17%" style="text-align:center;">操作</th>
</tr>
</thead>
<tbody id="userTb">
<c:forEach var="sbgl" items="${lst}" varStatus="status">
<tr>
<td><input type="checkbox" ></td>
<td>${sbgl.sbmc }</td>
<td>${sbgl.sblx }</td>
<td>${sbgl.sssx }</td>
<td>${sbgl.ssjd }</td>
<td>${sbgl.sbzt }</td>
<td>${sbgl.wxlxr }</td>
<td>${sbgl.wxlxdh }</td>
<td>${sbgl.mqsbcyr }</td>
<td style="text-align:center">
<a href="javascript:void(0);" onclick="console('update', '${user.userId}')"> 修改</a>
<a href="javascript:void(0);" onclick="showRoles('${user.userId}')">| 查看</a>
</td>
</tr>
</c:forEach>
</tbody> </table> </div>
</div> <!--分页-->
<div style="clear:both; height:50px">
<!--加载分页组件-->
<div id="kkpager"></div>
<script type="text/javascript">
var param = ""; $(function() {
var totalPage = ;
var totalRecords = ;
var pageSize = ; var pageNum = ;
//初始化分页控件
//有些参数是可选的,比如lang,若不传有默认值
kkpager.init({
pno: pageNum,
//总页码
total: ,
//总数据条数
totalRecords: totalRecords,
//链接前部
hrefFormer: 'user_list',
//链接尾部
hrefLatter: '',
getLink: function(n) {
return getInitParam() + "&pageNum=" + n + "&pageSize=" + pageSize;
},
lang: {
prePageText: '上一页',
nextPageText: '下一页',
totalPageBeforeText: '共',
totalPageAfterText: '页',
totalRecordsAfterText: '条数据',
gopageBeforeText: '转到',
gopageButtonOkText: '确定',
gopageAfterText: '页',
buttonTipBeforeText: '第',
buttonTipAfterText: '页'
}
});
//生成
kkpager.generPageHtml(); $('#mykkpagerselect').val(pageSize);
}); function returnoption(pageSize) {
window.location.href = getInitParam() + "&pageNum=1&pageSize=" + pageSize;
} function getInitParam() {
var serUserName = $('#ser_username').val();
var serActiveState = $('#ser_activeState').val();
var serOrgIds = $('#ser_orgId').val();
var serRoleIds = $('#ser_roleIds').val(); var attr = "?serUserName=" + encodeURI(encodeURI(serUserName))
+ "&serActiveState=" + serActiveState + "&serOrgIds=" + serOrgIds + "&serRoleIds=" + serRoleIds;
return "${ctx}/user/user_list" + attr;
}
</script>
<!--分页结束-->
</div>
<!--分页end--> </body>
</html>
3、Controller(SbglController.java)
@Controller("sbglController")
@RequestMapping("/sbgl")
public class SbglController extends BaseController {
@Autowired
private SbglDao dao;
/**
* 查询设备信息列表
* (在这里查询数据表所有数据,用Spring Data JPA框架自带的findAll()方法查询所有数据)。
*/
@RequestMapping("sbgl_list")
@RequiresRoles("sbgl/sbgl_list")
public String getUserList(Model model) throws Exception {
//这两行就能查询到Sbgl类对应的数据表的所有数据库,并放在List集合里,供JSP页面调用
List<Sbgl> lst=new ArrayList<Sbgl>();
lst=(List<Sbgl>) dao.findAll();
System.out.println("aaa");
model.addAttribute("lst", lst);
return "sbgl/sbgl_list";
}
}
4、DAO层(Spring Data JPA只需要extends继承Spring Data JPA接口,不需要写SQL从数据表查询,上面提到的自带的findAll()方法就可以查到对应实体类数据表的所有数据 )
package com.jinhetech.yogurt.sbgl.dao; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository; import com.jinhetech.yogurt.sbgl.entity.Sbgl; public interface SbglDao extends CrudRepository<Sbgl, String> { }
Spring MVC和Spring Data JPA之获取数据表数据放在List集合,显示在JSP页面的更多相关文章
- java(样品集成框架spring、spring mvc、spring data jpa、hibernate)
这是你自己的参考springside集成框架的开源项目.主要的整合spring.spring mvc.spring data jpa.hibernate几个框架,对于这些框架中仍然感觉更舒适sprin ...
- 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回
作者:ssslinppp 时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...
- Spring MVC 到 Spring Boot 的简化之路(山东数漫江湖)
背景 从Servlet技术到Spring和Spring MVC,开发Web应用变得越来越简捷.但是Spring和Spring MVC的众多配置有时却让人望而却步,相信有过Spring MVC开发经验的 ...
- 【转】Spring,Spring MVC及Spring Boot区别
对于一个Java开发者来说,Spring可谓如雷贯耳,无论是Spring框架,还是Spring引领的IOC,AOP风格,都对后续Java开发产生的深远的影响,同时,Spring社区总能及时响应开发者的 ...
- spring mvc和spring boot的区别
spring boot只是一个配置工具,整合工具,辅助工具. springmvc是框架,项目中实际运行的代码 Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等 ...
- Spring MVC 到 Spring BOOT 的简化之路
背景 Spring vs Spring MVC vs Spring Boot Spring FrameWork Spring 还能解决什么问题 Spring MVC 为什么需要Spring Boot ...
- Spring MVC 和 Spring 总结
1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合. 2). AOP编程的 ...
- 使用Spring MVC测试Spring Security Oauth2 API
不是因为看到希望了才去坚持,而坚持了才知道没有希望. 前言 在Spring Security源码分析十一:Spring Security OAuth2整合JWT和Spring Boot 2.0 整合 ...
- Spring,Spring MVC及Spring Boot区别
什么是Spring?它解决了什么问题? 我们说到Spring,一般指代的是Spring Framework,它是一个开源的应用程序框架,提供了一个简易的开发方式,通过这种开发方式,将避免那些可能致使代 ...
- callable与runable区别?switch char ?sql只查是否存在,sql复制表 ?反射 ? spring mvc 和spring 上下文区别?
中化技术部 2018.4.16 1. callable 和 thread 区别 实现Callable接口的线程能返回执行结果,而Runable 不可以 . Callable 的call方法允许抛出异 ...
随机推荐
- 苹果电脑macbook 安装 Burp Suite pro_v1.7.37破解版
1.先去官网下载最新版本 Burp Suite Community Edition v1.7.36安装完成 https://portswigger.net/burp/communitydownload ...
- sublimeText3最新教程-自带插件汉化(sublime-text_build-3175_amd64)
一.可用注册码 1.更改dns 在linux下的目录是 /etc/hosts 在win7中,hosts文件的位置:C:\Windows\System32\drivers\etc 127.0.0 ...
- 安装Qt5.9
目前,作为一个重量级编程开发工具,Qt 已经正式发布了 5.9.0 版本.相比之前的 5.7,5.8 版本,新版本在性能和功能上有了大幅改善和提高,并由此获得了官方的明确表态:这将是继 5.6 之后的 ...
- ACM-ICPC 2018 焦作赛区网络预赛G Give Candies(隔板定理 + 小费马定理 + 大数取模,组合数求和)题解
题意:给你n个东西,叫你把n分成任意段,这样的分法有几种(例如3:1 1 1,1 2,2 1,3 :所以3共有4种),n最多有1e5位,答案取模p = 1e9+7 思路:就是往n个东西中间插任意个板子 ...
- 【分布式计算】30分钟概览Spark分布式计算引擎
本文主要帮助初学者快速了解Spark,不会面面俱到,但核心一定点到. Spark是继Hadoop之后的下一代分布式内存计算引擎,于2009年诞生于加州大学伯克利分校AMPLab实验室,现在主要由Dat ...
- json封装数据,然后通过创造的标签调用
<ul class="list"> <li></li> <li></li> <li></li> ...
- C#学习笔记(二十):C#总结和月考讲解
m1w1d2_console_variable_constant 输入Console.WriteLine(); 输出Console.ReadLine(); 快捷键 折叠代码:快捷键“Ctrl+ K + ...
- Ambari安装指南
一.准备工作 l 基本工具 1) 安装epel,epel是一个提供高质量软件包的项目.先检查主机上是否安装: rpm -q epel-release 2) 如果没有安装,使用rpm命令安装: rpm ...
- ajax实现highchart与数据库数据结合完整案例分析(三)---柱状折线图
作者原创,未经博主允许,不可转载 在前面分析和讲解了用java代码分别实现饼状图和折线图,在工作当中,也会遇到很多用ajax进行异步请求 实现highchart. 先展示一下实现的效果图: 用ajax ...
- blast 数据库说明
Peptide Sequence Databases蛋白序列的数据库 nrAll non-redundant GenBank CDS translations + RefSeq Proteins + ...