《partner4java 讲述 p4jorm》之第二步:jdbc的使用(二)
ser实体,往里赛数据
User user = new User();
user.setPassword("123456" + i);
user.setUsername("partner4java" + i);
user.setAddress("partner4java@163.com");
// 我们就只需要这一句话就可以保存user进数据库了
daoTemplate.save(user);
}
}
}
一千条保存,当你看到数据表中新增的数据,是否心里暗暗欢喜
[java]
// 更新的数据,需要说明一点的是,我们只会更新指定id的数据,且不更新值为null的数据,你可以置空字符
@Test
public void testUpdate() {
User user = new User();
user.setPassword("");
user.setUsername("world");
// 设置id,表示需要更新的数据
user.setId(1);
daoTemplate.update(user);
}
@Test
public void testDelete(){
daoTemplate.delete(User.class, 1);
}
更新和删除也是如此简单。
关于实体,我们还有两个注解:
P4jTransient 用于指定该字段和数据库没关系、P4jColumn对字段的映射进行特殊指定(因为我们是根据实体成员字段的名称对应数据库字段名称,若两者不相同,就需要该注解)。
查询数据:
每次你点击form表单的查询提交后,是否心里暗想,我都已经把数据给你了,你为什么不自动给我返回我想要的数据呢?为什么还需要我费劲的去拼写查询SQL呢?
好吧,我帮你实现,而且不对你奢求太多工作:
如果你使用了struts类似框架,你一定有一层叫formbean,你只需要在formbean为几个需要参与查询字段加上注解就可以了(额外让你劳苦了几秒钟)。
(首先说明一点哈,form的提交到formbean中的数据封装,这是MVC框架的工作,我不会帮你做)
我们这里没有使用MVC框架,直接使用了Servlet:com.partner4java.jdbctest.web.UserListServlet(这个不是我们的重点就不贴出来了,自己去看附件)
我们定义了formbean:
[java]
/**
* 你会发现和我的User类很相似,通常情况下formbean会比entity少很多字段,或者多一些时间字段,这不是我们这里的重点,就不多解释了
*
* @author partner4java
*
*/
public class UserFormBean implements Serializable {
private static final long serialVersionUID = 4358513464951563450L;
private String username;
private String password;
private String address;
有了formbean我们还是加俩注解:
P4jQueryForm(标注于类上,表明本类的字段赋值会用于查询拼写,必须指定本注解)、P4jGeneral(用于声明某字段为普通查询,如等值查询)、P4jLike(用于声明某字段为like模糊查询),具体查看附件文档
[java]
@P4jQueryForm
public class UserFormBean implements Serializable {
private static final long serialVersionUID = 4358513464951563450L;
// 表示我们会查找名字为此的数据
@P4jGeneral(generalQueryType = GeneralQueryType.EQ)
private String username;
// 我没有任何注解,不会参与查询
private String password;
// 表示我们会根据地址模糊查询
@P4jLike
private String address;
在我们没有写任何dao和service的情况下,就可以直接完成显示层:
[java]
/**
* 我们这里简单示例,直接使用了Servlet,如果你使用MVC框架,UserFormbean的获取会自动进行
*
* @author partner4java
*
*/
public class UserListServlet extends HttpServlet {
private static final long serialVersionUID = -5372697351493999670L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
UserFormBean formBean = getUserForm(request);
String currentPage = getCurrentPage(request);
// 这里只给你要了要返回的类型,formbean,当前页,返回类型连强转都不用,不过分吧?
PageData users = P4jJdbcDaoTemplateSingleton.getJdbcDaoTemplate().query(User.class, formBean,
new PageIndex(new Integer(currentPage)), null);
request.setAttribute("users", users);
request.getRequestDispatcher("/WEB-INF/page/users.
jsp");
}
jsp和普通的界面一样,我又给大家封装了一个分页:
[
html]