etmvc+jQuery EasyUI使用教程(二)

本章我们来学习一下etmvc是如何访问数据库的。

etmvc中访问数据可以使用JDBC,HIBERNATE等,鉴于JDBC的烦琐和HIBERNATE的复杂,etmvc同时提供了一个ORM的简易实现版本ActiveRecord。在大多数中小型WEB系统中,使用ActiveRecord就足够了。

1、先将et-ar.jar, asm.jar, cglib.jar等包引入项目,当然还有mysql-connector-java-5.1.22-bin.jar,下载地址:http://www.mysql.com/downloads/connector/j/

2、配置activerecord.properties,新建一个activerecord.properties放在src目录下,其实只要放在CLASSPATH能找到的地方就好,这里可以给eclipse装一下propertiesEditor这个插件,专门用来编辑properties而不出乱码,我的资源有下。

3、activerecord.properties配置如下,很容易看懂的:

domain_base_class=com.et.ar.ActiveRecordBase
com.et.ar.ActiveRecordBase.driver_class=com.mysql.jdbc.Driver
com.et.ar.ActiveRecordBase.url=jdbc:mysql://localhost/test
com.et.ar.ActiveRecordBase.username=root
com.et.ar.ActiveRecordBase.password=root
com.et.ar.ActiveRecordBase.pool_size=2

4、在test数据库中新建一张表,然后往里添加几条记录:

create table users(
id int primary key auto_increment,
name varchar(10) default null,
addr varchar(50) default null,
email varchar(50) default null,
remark varchar(50) default null
)

5、在models建立对应的域对象即User.java,内容如下:

package models;

import com.et.ar.*;
import com.et.ar.annotations.*;

@Table(name="users")
public class User extends ActiveRecordBase{
    @Id private Integer id;
    @Column
    @NotEmpty(message="用户名称必须填写")
    private String name;
    @Column private String addr;
    @Column
    @Email(message="邮箱格式不对")
    private String email;
    @Column private String remark;

    //get,set...
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddr() {
        return addr;
    }
    public void setAddr(String addr) {
        this.addr = addr;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
}

6、我们的域模型对象继承自ActiveRecordBase,到些,ORM就建立完成了,我们看到,不需要复杂的配置文件,仅用几个简单的注解就完成了,接下来看看如何进行基本的CRUD操作,在UserController追加如下方法:

	/**
	 * 查询全部用户
	 */
	public JsonView index() throws Exception {

		List<User> users = User.findAll(User.class);
		Map<String, Object> result = new HashMap<String, Object>();
		result.put("success", true);
		for (User user : users) {
			result.put(user.getId().toString(), user.getName());
			// System.out.println(user.getName());
		}
		JsonView view = new JsonView(result);
		view.setContentType("text/html;charset=utf-8");// 允许指定ContentType
		return view;
	}
	
	/**
	 * 条件查询页面
	 */
	public void queryUser()
	{
		
	}
	
	/**
	 * 条件查询用户
	 */
	public JsonView query(String condition) throws Exception {

		List<User> users = User.findAll(User.class, "addr like ?", new Object[]{"%"+condition+"%"}); 
		Map<String, Object> result = new HashMap<String, Object>();
		result.put("success", true);
		for (User user : users) {
			result.put(user.getId().toString(), user.getName());
			// System.out.println(user.getName());
		}
		JsonView view = new JsonView(result);
		view.setContentType("text/html;charset=utf-8");// 允许指定ContentType
		return view;
	} 

	/**
	 * 新建用户页面
	 */
	public void newUser() {
	}

	/**
	 * 保存新增用户
	 */
	public void save(String username, String addr, String email, String remark)
			throws Exception {
		User user = new User();
		user.setName(username);
		user.setAddr(addr);
		user.setEmail(email);
		user.setRemark(remark);

		if (user.save()) {
			redirect("index"); // 重定向到列表页面
		} else {
			redirect("newUser"); // 重定向
		}
	}

	/**
	 * 编辑用户页面
	 */
	public void modifyUser() throws Exception {
		int id=1;
		User user = User.find(User.class, id);
		request.setAttribute("id", user.getId().toString());
		request.setAttribute("username", user.getName());
		request.setAttribute("addr", user.getAddr());
		request.setAttribute("email", user.getEmail());
		request.setAttribute("remark", user.getRemark());		
		// request.setAttribute("hello", "hello,test1");
	}

	/**
	 * 保存编辑用户
	 */
	public void update(String id, String username, String addr, String email,
			String remark) throws Exception {
		User user = User.find(User.class, Integer.parseInt(id));
		user.setName(username);
		user.setAddr(addr);
		user.setEmail(email);
		user.setRemark(remark);
		
		if (user.save()) {
			redirect("index"); // 重定向到列表页面
		} else {
			redirect("modifyUser"); // 重定向
		}
	}
	
	/**
	 * 删除用户页面
	 */
	public void delUser() {
		
	}

	/**
	 * 删除用户
	 */
	public void delete(String id) throws Exception {
		User user = User.find(User.class, Integer.parseInt(id));
		user.destroy();
		redirect("index"); // 重定向到列表页面
	}

7、在views/user目录下添加对应的queryUser.jsp、newUser.jsp、modifyUser.jsp、delUser.jsp页面:

(1)queryUser.jsp代码如下:

<%@ 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>查询用户</title>
</head>
<body>
	<form action="/myDemo/user/query" method="POST">  
	    <p>通讯地址:<input type="text" name="condition"></p>
	    <p><input type="submit" value="提交查询"></p>  
	</form>  

</body>
</html>

(2)newUser.jsp代码如下:

<%@ 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>添加用户</title>
</head>
<body>
	<form action="/myDemo/user/save" method="POST">  
	    <p>用户姓名:<input type="text" name="username"></p>  
	    <p>通讯地址:<input type="text" name="addr"></p>
	    <p>电子邮箱:<input type="text" name="email"></p>
	    <p>备注:<input type="text" name="remark"></p> 
	    <p><input type="submit" value="提交保存"></p>  
	</form>  

</body>
</html>

(3)modifyUser.jsp代码如下:

<%@ 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>修改用户</title>
</head>
<%
String id=(String)request.getAttribute("id");
String username=(String)request.getAttribute("username");
String addr=(String)request.getAttribute("addr");
String email=(String)request.getAttribute("email");
String remark=(String)request.getAttribute("remark");

%>
<body>
	<form action="/myDemo/user/update" method="POST">  
	    <p>用户ID:<input type="text" name="id" value="<%=id %>"></p> 
	    <p>用户姓名:<input type="text" name="username" value="<%=username %>"></p>  
	    <p>通讯地址:<input type="text" name="addr" value="<%=addr %>"></p>
	    <p>电子邮箱:<input type="text" name="email" value="<%=email %>"></p>
	    <p>备注:<input type="text" name="remark" value="<%=remark %>"></p> 
	    <p><input type="submit" value="提交编辑"></p>  
	</form>  

</body>
</html>

(4)delUser.jsp代码如下:

<%@ 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>修改用户</title>
</head>
<body>
	<form action="/myDemo/user/delete" method="POST">  
	    <p>用户ID:<input type="text" name="id" value="1"></p>  
	    <p><input type="submit" value="提交删除"></p>  
	</form>  

</body>
</html>

8、最后调试运行结果如下:

(1)访问:http://localhost:8080/myDemo/user/index

(2)访问:http://localhost:8080/myDemo/user/newUser,添加用户,点击提交保存

(3)访问:http://localhost:8080/myDemo/user/modifyUser,编辑用户,提交编辑

(4)、访问:http://localhost:8080/myDemo/user/delUser,输入要删除的用户编号,提交删除

(5)、访问:http://localhost:8080/myDemo/user/queryUser,输入查询条件,提交查询



这一章介绍到这,下一章将学习一下ActiveRecord中的关联,即一对一、一对多、多对一等关联问题!


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值