`
Supanccy2013
  • 浏览: 223722 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Nutz4---一对一的增删改查

    博客分类:
  • Nutz
 
阅读更多
   nutz太过轻量,所有关联的对象,都不会一个方法就load出来,需要两个步骤,下面是实例。

一:数据库
1,创建person表
-- Create table
create table T_PERSON
(
  ID        NUMBER not null,
  NAME      NVARCHAR2(60),
  PASSWORD  NVARCHAR2(60),
  ADDRESSID NUMBER
)
tablespace SYSTEM
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table T_PERSON
  add constraint PK_PERSON primary key (ID)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

2,创建address表
-- Create table
create table T_ADDRESS
(
  ID   NUMBER not null,
  NAME NVARCHAR2(60),
  MEMO NVARCHAR2(60)
)
tablespace SYSTEM
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table T_ADDRESS
  add constraint PK_ADDRESS primary key (ID)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

3,创建序列
--创建序列(实现person,address主键自增的必要序列)
create sequence seq_nutz
increment by 1
start with 1
maxvalue 999999999;

4,创建触发器
--给person表创建触发器--实现主键自增
CREATE TRIGGER trigger_pk_person BEFORE
insert ON  T_PERSON FOR EACH ROW
begin
select seq_nutz.nextval into:New.id from dual;
end;

--给person表创建触发器--实现主键自增
CREATE TRIGGER trigger_pk_address BEFORE
insert ON  T_ADDRESS FOR EACH ROW
begin
select seq_nutz.nextval into:New.id from dual;
end;

2,数据库实体模型
Person实体
package com.supan.nuts.module;

import org.nutz.dao.entity.annotation.Column;
import org.nutz.dao.entity.annotation.Id;
import org.nutz.dao.entity.annotation.One;
import org.nutz.dao.entity.annotation.Table;

@Table("T_PERSON")
public class Person {
	
	@Id
	private Integer id;
	
	@Column("name")
	private String name;
	
	@Column("password")
	private String password;
	
	@Column("addressId")
	private Integer addressId;
	
	@One(target = Address.class,field = "addressId")
	private Address address;
         //省略getter setter...
}

Address实体
package com.supan.nuts.module;

import org.nutz.dao.entity.annotation.Column;
import org.nutz.dao.entity.annotation.Id;
import org.nutz.dao.entity.annotation.Table;

@Table("T_ADDRESS")
public class Address {
	
	@Id
	private Integer id;
	
	@Column("name")
	private String name;
	
	@Column("memo")
	private String memo;
         //省略getter,setter
}
三:页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/json2.js"></script>
<script type="text/javascript">

    //添加person
    //在页面上构造后台需要的复杂的Person对象。
    function addPerson(){
        var person = {
                id:"1",
                name:"chenchaoyang",
                password:"woaini",
                address:{
                    id:1,
                    name:"广东省深圳市龙岗区",
                    memo:"有点远"
                }
        }
        $.ajax({
            type : 'POST',
            url : 'insertPerson.nut',
            data : JSON.stringify(person),
            success : function(){
                alert("chenchaoyang");
            }
        });
    }
    
    //获取Person对象
    function getPerson(personId){
        $.ajax({
            type : 'POST',
            url : 'getPerson.nut?personId=26',
            success : function(){
                alert("chenchaoyang");
            }
        });
    }
    
    //更新Person对象
    function updatePerson(personId){
        $.ajax({
            type : 'POST',
            url : 'updatePerson.nut?personId=26',
            success : function(){
                alert("chenchaoyang");
            }
        });
    }
    
    //更新Person对象
    function queryPerson(personId){
        $.ajax({
            type : 'POST',
            url : 'queryPerson.nut',
            success : function(){
                alert("chenchaoyang");
            }
        });
    }
    
</script>
</head>
<body>
<input type="button" value="添加Person" onclick="addPerson();">
<input type="button" value="获取Person" onclick="getPerson();">
<input type="button" value="更新Person" onclick="updatePerson();">
<input type="button" value="查询Person列表" onclick="queryPerson();">
</body>
</html>

四:Action
package com.supan.nuts.action;
import java.util.List;
import org.nutz.dao.impl.NutDao;
import org.nutz.dao.pager.Pager;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.adaptor.JsonAdaptor;
import org.nutz.mvc.adaptor.PairAdaptor;
import org.nutz.mvc.annotation.AdaptBy;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import com.supan.nuts.module.Person;

@IocBean
public class PersonAction {

	@Inject
	private NutDao dao;

	@At("/insertPerson")
	@Ok("json")
	@AdaptBy(type = JsonAdaptor.class)
	public String insertPerson(@Param("..") Person person) {
		// 注意下面一句话可以同时插入Person,Address表中各一条记录
		dao.insertWith(person, "address");
		return "success";
	}

	@At("/getPerson")
	@Ok("json")
	@AdaptBy(type = PairAdaptor.class)
	public String getPerson(@Param("personId") Integer personId) {
		// 仅仅获取Person对象,不包括含有的Address关联对象
		Person person = dao.fetch(Person.class, personId);
		// 获取Person对象,包括关联对象address
		Person person2 = dao.fetchLinks(person, "address");
		// 注意nutz并没有提供一个方法能一次获取Person及其关联对象address
		// 如果你想一句话获取Person及其关联对象address可以组合上面的两句
		Person person3 = dao.fetchLinks(dao.fetch(Person.class, personId),
				"address");
		return "success";
	}

	@At("/updatePerson")
	@Ok("json")
	@AdaptBy(type = PairAdaptor.class)
	public String updatePerson(@Param("personId") Integer personId) {
		// 先根据PersonId获取Person对象(注意包括其关联的address对象)
		Person person = dao.fetchLinks(dao.fetch(Person.class, personId),
				"address");
		person.setName("何胜男");
		person.setPassword("heshegnnan");
		// 更新Person关联的Address对象
		person.getAddress().setName("河南省");
		person.getAddress().setMemo("是个贫穷的地方");
		// 同时更新Person及其关联的Address对象
		dao.updateWith(person, "address");
		return "success";
	}

	/**
	 * 查询Person列表,注意nutz并不会关联查询其关联的address对象 2015年5月9日
	 */
	@At("/queryPerson")
	@Ok("json")
	@AdaptBy(type = PairAdaptor.class)
	public String queryPerson() {
		Pager pager = dao.createPager(1, 100000);
		// 仅仅查询Person列表
		List<Person> personList = dao.query(Person.class, null, pager);
		// 遍历Person列表,为每个person查询其关联的address
		for (Person person : personList) {
			dao.fetchLinks(person, "address");
		}
		return "success";
	}

	public NutDao getDao() {
		return dao;
	}

	public void setDao(NutDao dao) {
		this.dao = dao;
	}
}



分享到:
评论

相关推荐

    nutz需要的jar包

    `nutz-log`提供了日志记录功能,可以根据需求选择不同的日志实现,如log4j、slf4j等;`nutz-utils`则是一些通用的工具类,如字符串处理、日期时间操作等。 在实际项目中,根据需求可能还需要引入一些额外的jar包,...

    nutz-1.r.60.jar

    nutz-1.r.60.jar

    nutz-1.b.43-jdk5.jar

    nutz-1.b.43-jdk5.jar 资源包

    nutz-1.b.52.zip

    Nutz, 它是一组轻便小型的框架的集合。 -------------Nutz 可以做什么? Dao -- 针对 JDBC 的薄封装,事务模板,无缓存 Ioc -- JSON 风格的配置文件,声明时切片支持 Mvc -- 注解风格的配置,内置多文件上传功能 ...

    nutz-1.r.61-发布包

    4. **Nutz-1.r.61-sources.jar** 这个文件提供了Nutz 1.r.61版本的源代码,对于开发者来说,这是一个宝贵的资源,可以深入理解Nutz框架的内部实现,方便进行问题排查或自定义扩展。 5. **Nutz-1.r.61-manual.pdf ...

    nutz-1.b.48-manual.pdf 文档

    Nutz特别适合那些在Web开发过程中希望减少对第三方框架依赖的开发者,尤其是那些对SSH框架感到繁琐、希望简化XML配置或对JSON转换感到复杂的开发者。Nutz框架可以在WEB-INF/lib下仅使用一个nutz.jar来运行一个Web...

    nutz-1.r.58

    4. `nutz-1.r.58-manual.pdf` 和 `nutz-1.r.58-manual.rtf`:这是Nutz框架的手册,分别以PDF和RTF格式提供,包含了框架的使用指南、示例代码和最佳实践等内容。手册是开发者快速上手和掌握Nutz框架的重要教程资源。 ...

    nutz-1.b.43-jdk6.jar

    nutz-1.b.43-jdk5.jar 资源包

    wendal-nutz-master.zip

    这个压缩包“wendal-nutz-master.zip”包含了NUTZ框架的一个示例项目或者学习资源,帮助初学者理解和掌握NUTZ的核心特性。 在深入探讨NUTZ之前,我们先来理解一下什么是框架。框架是一种预定义的软件结构,它规定了...

    nutz-1.r.62.zip

    Nutz-1.r.62是该框架的一个版本,它包含了一系列优化和改进,使得开发者在构建应用程序时能更加得心应手。 在Nutz-1.r.62.zip压缩包中,主要有以下几个文件: 1. `nutz-1.r.62.jar`:这是Nutz框架的核心库文件,...

    nutz-嵌入式开发资源

    Nutz -- Web(Mvc/Ioc/Aop/Dao/Json) for ALL Java developer

    nutz-1.r.62.jar

    nutz-1.r.62.jar 的jar包 可以解决中文乱码,设置字符编码等等

    nutz-1.r.61.r2.jar包

    标题中的"nutz-1.r.61.r2.jar"是一个特定版本的Nutz框架的Java库文件。Nutz是一个开源的Java框架,它旨在简化Web开发,提供一系列实用工具和强大的支持,使得开发者能够更高效地进行业务逻辑处理。这个版本号"1.r.61...

    nutz-1.r.57的JDK1.5编译

    在本案例中,我们关注的是"Nutz-1.r.57的JDK1.5编译",这表明我们需要了解如何在较低的JDK版本环境下,编译和使用Nutz框架。 首先,我们要知道Nutz官方推荐使用JDK1.6进行编译,这是因为JDK1.6引入了许多对开发者...

    nutz简单综合实例----通过html网页对数据库进行管理操作(MVC,Ioc,Dao)

    在这个实例中,开发者可能创建了一个简单的HTML页面,用户可以通过这个页面提交表单,然后这些数据会被控制器接收,通过Nutz的IoC和DAO功能与数据库进行交互,完成数据的增删改查。压缩包文件"helloNutz2"很可能包含...

    nutz-1.b.49-manual.pdf

    标题:"nutz-1.b.49-manual.pdf" 指出了文档是关于Nutz框架的官方手册,版本为1.b.49。手册这一名称通常意味着该文档是为用户提供详细的指导,帮助用户理解和使用该框架。 描述:"nutz 框架nutz-1.b.49-manual.pdf...

    Nutz-1.b.38

    同传统的 SSH 相比,它具备如下特点:轻 -- ...这就意味着:如果一个 Web 应用,你在 WEB-INF/lib 下只 需要放置一个 nutz.jar 就够了当然你要使用其它的连接池,数据库驱动,打印PDF支持等功能,还需要自行添置 jar 包

    nutz-jar包,20170512

    通过以上分析,我们可以看出Nutz-jar包是一个全面的Java开发解决方案,尤其适合构建中小型项目。20170512版本的Nutz-jar包在当时应该具有较高的稳定性和成熟度,是那个时期开发者们的一个可靠选择。

    nutz-1.b.49.r2.zip

    Nutz是对于Java程序员来说,除SSH之外的另一个选择。当然,它是开源的,并且是完全免费的。同时也是商业友好的(Licensed under the Apache License, Version 2.0)。

Global site tag (gtag.js) - Google Analytics