grails学习笔记-4、通过例子了解grails开发的基本流程
2014-01-08 16:06
676 查看
第一步、新建项目:
注意选对grails的版本即可。如果你只装了一个版本的grails,那用默认的即可。
这里我们实现一个对图书的增,删,改。
2、配置数据库连接。
打开conf/DataSource.groovy,改成这样:
当然,不修改也可以。grails会使用自己带的数据库h2(纯java的内存数据库)。我这里用的是postgresql。所以改了。可以看到这里有3个环境变量development、test、production。在启动项目时,可以通过-Dgrails.env=xx来进行选择。程序启动命令如下:
例子 grails -Dgrails.env=development run-app。
注意:grails run-app默认使用环境变量development。
命令行输入在这:
3、引入数据库驱动包:postgresql-9.1-902.jdbc4.jar
复制jar包到lib目录下,add to build path,右键-〉grails tools-〉Refresh Dependencies(也可以用命令refresh-dependencies来实现)。
4、新建Domain类。
两种方式:(1)通过命令:create-domain-class Book(2)右键-〉New-〉Domain Class
Book代码如下:
5、创建controller和views:两种方式(1)选中Book类,右键-〉new-〉Generate Controller and Views (2)命令grails generate-all xmt.test.Book
grails会自动创建Controller(会自动生成增、删、改、查的相关方法)和View(会自动生成增、删、改、查的相关页面)
BookController:
Book views:
OK,到这里,一个图书的最基本的模块就开发完了。是不是很简单。
启动程序grails run-app。访问 http://localhost:8080/Test。点击xmt.test.BookController。Book的列表,增、删、改都有了。你可以根据自己的需要进行修改。
以上是最简单的一个例子,意在说明grails项目开发的基本流程。做j2ee的都应该有感受,项目中这种数据的增删改查操作占了很大的比例。有一些简单的项目甚至90%的功能都是这个。有了grails,你就能从这种重复,繁琐的劳动中解脱出来了。
以后我主要会记录我开发中遇到的各种问题和难点,让我费了不少时间的东西,遇到同样问题的朋友就不用再费劲了。而不会介绍如何使用grails,这些你都可以在官方文档上看到,grails的官方文档很不错,你不需要都看,用到什么看什么。官方文档在这:http://grails.org/doc/latest/guide/index.html
注意选对grails的版本即可。如果你只装了一个版本的grails,那用默认的即可。
这里我们实现一个对图书的增,删,改。
2、配置数据库连接。
打开conf/DataSource.groovy,改成这样:
dataSource { pooled = true driverClassName = "org.h2.Driver" username = "sa" password = "" } hibernate { cache.use_second_level_cache = true cache.use_query_cache = false cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' } // environment specific settings environments { development { dataSource { dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', '' driverClassName = "org.postgresql.Driver" //url = "jdbc:postgresql://192.168.1.203:5432/labdb" url = "jdbc:postgresql://localhost:5432/Test" dialect = "org.hibernate.dialect.PostgreSQLDialect" username="root" password="123456" logSql = true } } test { dataSource { dbCreate = "update" url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000" } } production { dataSource { dbCreate = "update" url = "jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000" pooled = true properties { maxActive = -1 minEvictableIdleTimeMillis=1800000 timeBetweenEvictionRunsMillis=1800000 numTestsPerEvictionRun=3 testOnBorrow=true testWhileIdle=true testOnReturn=true validationQuery="SELECT 1" } } } }
当然,不修改也可以。grails会使用自己带的数据库h2(纯java的内存数据库)。我这里用的是postgresql。所以改了。可以看到这里有3个环境变量development、test、production。在启动项目时,可以通过-Dgrails.env=xx来进行选择。程序启动命令如下:
grails [env]* run-app
例子 grails -Dgrails.env=development run-app。
注意:grails run-app默认使用环境变量development。
命令行输入在这:
3、引入数据库驱动包:postgresql-9.1-902.jdbc4.jar
复制jar包到lib目录下,add to build path,右键-〉grails tools-〉Refresh Dependencies(也可以用命令refresh-dependencies来实现)。
4、新建Domain类。
两种方式:(1)通过命令:create-domain-class Book(2)右键-〉New-〉Domain Class
Book代码如下:
package xmt.test class Book { String title String content }
5、创建controller和views:两种方式(1)选中Book类,右键-〉new-〉Generate Controller and Views (2)命令grails generate-all xmt.test.Book
grails会自动创建Controller(会自动生成增、删、改、查的相关方法)和View(会自动生成增、删、改、查的相关页面)
BookController:
package xmt.test import org.springframework.dao.DataIntegrityViolationException class BookController { static allowedMethods = [save: "POST", update: "POST", delete: "POST"] def index() { redirect(action: "list", params: params) } def list(Integer max) { params.max = Math.min(max ?: 10, 100) [bookInstanceList: Book.list(params), bookInstanceTotal: Book.count()] } def create() { [bookInstance: new Book(params)] } def save() { def bookInstance = new Book(params) if (!bookInstance.save(flush: true)) { render(view: "create", model: [bookInstance: bookInstance]) return } flash.message = message(code: 'default.created.message', args: [message(code: 'book.label', default: 'Book'), bookInstance.id]) redirect(action: "show", id: bookInstance.id) } def show(Long id) { def bookInstance = Book.get(id) if (!bookInstance) { flash.message = message(code: 'default.not.found.message', args: [message(code: 'book.label', default: 'Book'), id]) redirect(action: "list") return } [bookInstance: bookInstance] } def edit(Long id) { def bookInstance = Book.get(id) if (!bookInstance) { flash.message = message(code: 'default.not.found.message', args: [message(code: 'book.label', default: 'Book'), id]) redirect(action: "list") return } [bookInstance: bookInstance] } def update(Long id, Long version) { def bookInstance = Book.get(id) if (!bookInstance) { flash.message = message(code: 'default.not.found.message', args: [message(code: 'book.label', default: 'Book'), id]) redirect(action: "list") return } if (version != null) { if (bookInstance.version > version) { bookInstance.errors.rejectValue("version", "default.optimistic.locking.failure", [message(code: 'book.label', default: 'Book')] as Object[], "Another user has updated this Book while you were editing") render(view: "edit", model: [bookInstance: bookInstance]) return } } bookInstance.properties = params if (!bookInstance.save(flush: true)) { render(view: "edit", model: [bookInstance: bookInstance]) return } flash.message = message(code: 'default.updated.message', args: [message(code: 'book.label', default: 'Book'), bookInstance.id]) redirect(action: "show", id: bookInstance.id) } def delete(Long id) { def bookInstance = Book.get(id) if (!bookInstance) { flash.message = message(code: 'default.not.found.message', args: [message(code: 'book.label', default: 'Book'), id]) redirect(action: "list") return } try { bookInstance.delete(flush: true) flash.message = message(code: 'default.deleted.message', args: [message(code: 'book.label', default: 'Book'), id]) redirect(action: "list") } catch (DataIntegrityViolationException e) { flash.message = message(code: 'default.not.deleted.message', args: [message(code: 'book.label', default: 'Book'), id]) redirect(action: "show", id: id) } } }
Book views:
OK,到这里,一个图书的最基本的模块就开发完了。是不是很简单。
启动程序grails run-app。访问 http://localhost:8080/Test。点击xmt.test.BookController。Book的列表,增、删、改都有了。你可以根据自己的需要进行修改。
以上是最简单的一个例子,意在说明grails项目开发的基本流程。做j2ee的都应该有感受,项目中这种数据的增删改查操作占了很大的比例。有一些简单的项目甚至90%的功能都是这个。有了grails,你就能从这种重复,繁琐的劳动中解脱出来了。
以后我主要会记录我开发中遇到的各种问题和难点,让我费了不少时间的东西,遇到同样问题的朋友就不用再费劲了。而不会介绍如何使用grails,这些你都可以在官方文档上看到,grails的官方文档很不错,你不需要都看,用到什么看什么。官方文档在这:http://grails.org/doc/latest/guide/index.html
相关文章推荐
- PJSIP学习笔记——从simple_pjsua.c示例程序了解PJSUA-LIB的基本使用流程
- PJSIP学习笔记——从simple_pjsua.c示例程序了解PJSUA-LIB的基本使用流程
- 学习笔记:Linux驱动开发git基本使用流程
- Struts2学习笔记--Struts例子及开发流程
- SpringMVC学习笔记一:基本概念,执行流程与开发步骤
- PJSIP学习笔记——从simple_pjsua.c示例程序了解PJSUA-LIB的基本使用流程
- IOS开发基础—通过联系人管理实例学习xib的基本使用
- ASP.NET MVC4应用程序基本结构和执行流程---ASP.NET学习笔记(1)
- 学习Windows Mobile开发系列笔记(win32基本程序框架)
- Android应用开发学习笔记05--使用基本的UI控件
- Linux设备驱动第一天学习笔记(如何将系统在开发板上运行起来、驱动开发基本步骤)
- RPG学习笔记(基本知识了解)
- Android开发学习笔记之通过API接口将LaTex数学函数表达式转化为图片形式
- NDK学习笔记:动态链接库与静态链接库的基本使用流程简记
- 《MFC深入浅出》学习笔记--------Win32 SDK 程序开发流程
- 微信开发学习笔记(第一步:)基本配置
- Animations(通过Java 代码控制) -- MarsChen Android 开发教程学习笔记
- 【Unity3D】学习笔记(第5记) 2D游戏开发基本技巧之拾取道具
- SAP学习笔记(SD的基本流程)
- 学习Windows Mobile开发系列笔记(win32基本程序框架)