最代码官方的gravatar头像
最代码官方2015-10-07 11:26:59

Spring MVC4+SpringData JPA+jqueryUI开发简单的图书增删改查入门实例

项目截图

Spring MVC4+SpringData JPA+jqueryUI开发简单的图书增删改查入门实例

Spring MVC4+SpringData JPA+jqueryUI开发简单的图书增删改查入门实例

Spring MVC4+SpringData JPA+jqueryUI开发简单的图书增删改查入门实例

程序概述

该程序可以实现对图书的增删该查功能,所有的图书都会显示在首页。

Spring MVC4+SpringData JPA+jqueryUI开发简单的图书增删改查入门实例

当你在首页点击某一个图书后会进入图书详情页面。

Spring MVC4+SpringData JPA+jqueryUI开发简单的图书增删改查入门实例

点击编辑图书可以进入编辑页面

Spring MVC4+SpringData JPA+jqueryUI开发简单的图书增删改查入门实例

程序分层

数据库层

支持mysql和h2,需要修改datasource-tx-jpa.xml中的配置,默认是h2数据库

<!-- Embedded Database -->
	<jdbc:embedded-database id="dataSource" type="H2">
		<jdbc:script location="classpath:schema.sql" />
		<jdbc:script location="classpath:test-data-h2.sql" />
	</jdbc:embedded-database>

Spring MVC4+SpringData JPA+jqueryUI开发简单的图书增删改查入门实例

持久层

该程序最主要的持久层对象就是Book对象,下面的代码片段显示了它的主要字段,每个字段通过JPA注解关联到数据库的表字段,Hibernate技术被用到了持久层provider

@Entity
@Table(name = "book")
public class Book implements Serializable {
  private Long id;
  private int version;
  private String name;
  private String publisher;
  private DateTime dateOfPublication;
  private String description;
  private byte[] photo;
  ...
}

Service Layer

SpringData JPA开源项目简化了java持久层CRUD的操作,在Service层中调用SpringData JPA实现CRUD的操作。所有的Service层方法都可以通过SpringData JPA的接口CRUDRepository实现调用。

@Service("bookService")
@Repository
@Transactional
public class BookServiceImpl implements BookService {
 
  @Autowired
  private BookRepository bookRepository;
 
  @Transactional(readOnly=true)
  public List<Book> findAll() {
    return Lists.newArrayList(bookRepository.findAll());
  }
  ...
}

Book Controller

所有请求到/的URI都通过BookController来处理,它有很多处理方法,但是我这边只给出最基本的一个方法:

@RequestMapping("/")
@Controller
public class BookController {
 
  @Autowired
  private BookService bookService;
 
  @RequestMapping(method = RequestMethod.GET)
  public String list(Model uiModel) {
    List<Book> books = bookService.findAll();
    uiModel.addAttribute("books", books);
 
    return "books/list";
  }
   ...
}

显示层

下面的代码片段在首页显示了所有的图片数据

<c:if test="${not empty books}">
  <table>
    <thead>
      <tr>
	<th>${labelBookName}</th>
	<th>${labelBookPublisher}</th>
	<th>${labelDateOfPublication}</th>
      </tr>
    </thead>
    <tbody>
      <c:forEach items="${books}" var="book">
 	<tr>
	  <td>
            <a href="${showBookUrl}${book.id}">${book.name}</a>
          </td>
	  <td>${book.publisher}</td>
          <td><joda:format value="${book.dateOfPublication}"
 	       pattern="yyyy-MM-dd" /></td>
        </tr>
      </c:forEach>
    </tbody>
  </table>
</c:if>

附加功能

Spring Data JPA

CRUDRepository是抽象仓库对象,提供了基于JPA的最简单的接口。

jQuery UI

jQuery UI在该程序中用户创建一些按钮

Spring Security

最简单的权限控制,当用户登录后可以编辑和删除图书,未登录只能查看所有图书列表。

H2 Embedded Database

该程序用内置的数据库H2

Apache Tiles

Apache Tiles是开源的模板技术框架,它可以和spring mvc完美结合,和其他MVC框架也可以支持。

i18n国际化支持

该程序支持英语和法语,spring:message标签可以在jspx中实现国际化语言支持,该文件在src/main/webapp/WEB-INF/i18n文件夹下

Validation

JSR-349 Bean Validation API在domain层利用,该图书的名称不能为空而且必须在5-100个大小。

原文:http://chrisbaileydeveloper.com/projects/springmvc/


打赏

文件名:Spring MVC4+SpringData JPA+jqueryUI开发简单的图书增删改查入门实例.rar,文件大小:3327.908K下载
  • /
      • /SpringMVC4-SpringDataJPA-jqueryUI
        • /SpringMVC4-SpringDataJPA-jqueryUI/.classpath
        • /SpringMVC4-SpringDataJPA-jqueryUI/.gitignore
        • /SpringMVC4-SpringDataJPA-jqueryUI/.project
          • /SpringMVC4-SpringDataJPA-jqueryUI/.settings
            • /SpringMVC4-SpringDataJPA-jqueryUI/.settings/.jsdtscope
            • /SpringMVC4-SpringDataJPA-jqueryUI/.settings/org.eclipse.core.resources.prefs
            • /SpringMVC4-SpringDataJPA-jqueryUI/.settings/org.eclipse.jdt.core.prefs
            • /SpringMVC4-SpringDataJPA-jqueryUI/.settings/org.eclipse.m2e.core.prefs
            • /SpringMVC4-SpringDataJPA-jqueryUI/.settings/org.eclipse.wst.common.component
            • /SpringMVC4-SpringDataJPA-jqueryUI/.settings/org.eclipse.wst.common.project.facet.core.xml
            • /SpringMVC4-SpringDataJPA-jqueryUI/.settings/org.eclipse.wst.jsdt.ui.superType.container
最代码最近下载分享源代码列表最近下载
lyp54231a LV52021年5月9日
月亮星星
Freedom74 LV42020年3月21日
月亮
猿来就是你 LV122019年4月29日
月亮月亮月亮
Mageliterio LV22019年4月15日
星星星星
taozhao LV12018年5月10日
星星
thinkcodee LV92018年1月3日
月亮月亮星星
chinafjfzlj LV312017年9月11日
太阳月亮月亮月亮星星星星星星
2691533321 LV222017年3月30日
太阳月亮星星星星
ruiqiweb LV102017年1月10日
月亮月亮星星星星
wing520 LV82016年12月31日
月亮月亮
最代码最近浏览分享源代码列表最近浏览
wanglinddad LV371月20日
太阳太阳月亮星星
一杯美式 LV11月11日
星星
meyuso LV61月6日
月亮星星星星
人间蒸发 LV222021年12月24日
太阳月亮星星星星
7898150 LV32021年12月18日
星星星星星星
fei3655 LV42021年12月15日
月亮
莫愁天下无知己 LV52021年12月13日
月亮星星
zhllzhll LV72021年12月8日
月亮星星星星星星
wwx19983262021年12月7日
暂无贡献等级
ー個亽の江湖2021年12月6日
暂无贡献等级
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友