最代码官方的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
最代码最近下载分享源代码列表最近下载
1204820258  LV6 2022年9月29日
lyp54231a  LV5 2021年5月9日
Freedom74  LV4 2020年3月21日
猿来就是你  LV12 2019年4月29日
Mageliterio  LV2 2019年4月15日
taozhao  LV1 2018年5月10日
thinkcodee  LV9 2018年1月3日
chinafjfzlj  LV31 2017年9月11日
2691533321  LV23 2017年3月30日
ruiqiweb  LV10 2017年1月10日
最代码最近浏览分享源代码列表最近浏览
森sdfgf  LV8 2月5日
BestClever  LV32 1月24日
z96141176 1月17日
暂无贡献等级
wang0823 2023年12月29日
暂无贡献等级
a1005155203 2023年12月15日
暂无贡献等级
新工艺  LV7 2023年9月22日
peanut_666  LV1 2023年8月30日
矿泉水  LV30 2023年8月10日
飞呀飞呀飞不放  LV7 2023年8月9日
w13947486972  LV1 2023年7月14日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友