利用Hibernate怎么增删改查一个表!

wuql890523 2011-04-20 05:49:22
小弟新手别喷!!!我现在配置了hibernate.cfg.xml 写了一个User的实体类 建了个Table user_register 我想 通过hibernate来访问建好的table表,显示在浏览器上!我就想要个例子,最好有增删改查,谢谢各位大神了!!
...全文
232 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuql890523 2011-04-23
  • 打赏
  • 举报
回复
我知道啊,我用过JDBC,DAO,javaBean不过在学Hibernate的时候说higernate是对JDBC的封装,我想用了JDBC 那不就是说不用再用那些繁锁的接接代码了嘛,我就把以前写的 方案重新改写了,查询我应该成功了,很简单,原本几个文件完成了步骤现在一个java文件就搞定了,感觉挺爽的不过现在增删改又出新问题了!!有代码的贴出来晒晒吧!!!
nf0011468 2011-04-21
  • 打赏
  • 举报
回复
如果你用ECLISE的话是有自动生成DAO方法的功能的,写都不用写,直接调用生成的增删改查就行了
cai_lx 2011-04-20
  • 打赏
  • 举报
回复
hiberbate好像不擅长干这个事儿,为啥不直接用JDBC呢?还方便直接。
wuql890523 2011-04-20
  • 打赏
  • 举报
回复
感觉有点头大,我的写法是这样的
public class UserAction extends ActionSupport{


HttpServletRequest request = ServletActionContext.getRequest();

private static SessionFactory sf;

public static void beforeClass() {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
}

public static void afterClass() {
sf.close();
}

public String getUserList(){
Session s = sf.getCurrentSession();
s.beginTransaction();
List list = s.createSQLQuery("select * from user_register").list() ;
request.setAttribute("register",list);
s.getTransaction().commit();
return "getList";
}

}


然后在JSP页面,利用EL表达式,遍历一下就可以了吧
   	<c:forEach var="register" items="${register}">
<tr>
<td>${register.id}</td>
<td>${register.username}</td>
<td>${register.email}</td>
<td>${register.phone}</td>
<td>${register.home}</td>
<td><a href="${pageContext.request.contextPath}/user/register!delUser?user.id=${register.id}">删除</a></td>
<td><a href="${pageContext.request.contextPath}/user/register!updateUser?user.id=${register.id}">修改</a></td>
</tr>
</c:forEach>


这样不就显示了吗??但想的很简单,做起来才知道可能是错的,最少现在是在new Session()的时候报空指针,我明明new了工厂了呀,怎么会是空指针呢!!!
BUG胡汉三 2011-04-20
  • 打赏
  • 举报
回复
忘了说了、在Hibernate中也可以使用sql语句!只需要将query.createQuery();换成:
query.createSqlQuery(); 用这个方法就行了!!!
BUG胡汉三 2011-04-20
  • 打赏
  • 举报
回复
数据层:

/*一定要有工具给你自动生成的session工厂(如果你用的IDE是MyEclipse那么在添Hibernate
*将会给你自动生成)。
*/
Session sess = HibernateSessionFactory.getSession();
User u = new User();
u.setName("张三");
u.setAge("18");
.....给属性赋值
sess.save(u); //添加
sess.update(u); //在保存的时候、一定要给User的Id属性赋值更新跟添加的区别就在Id(主键)属性
sess.detele(u); //删除的时候、也要Id属性。

//sess.get()方法返回一个Object对象
User user = sess.get(User.class,u.getId); //根据编号获取一条记录(User.class要查询的类)。

//其中User类名开头字母要大写(就是跟你的javaBean名称一样)——查询全部记录
Query query = sess.CreateQuery("你的hql语句如:from User");
List list = query.list(); //query.list()返回一个list集合
//如果有参数
//String hql = "from User where name = :name ";
//Query query = sess.CreateQuery(hql);
//query.setString("name","张三"); //还有很多中设值参数的方法、自己下去google一下。
//List list = query.list();


值得注意的是当你只要查询某张表中的某几个字段的时候、Hibernate会根据你要查询的字段的个数给你返回不同的类型(虽然qeury.list方法返回的都是list但是list中存储的类型不同)
如:

String hql ="select u.name,u.age from User u";
List list = query.list();
//当你用对象去接收list集合中的值的时候...嘿嘿!!!
for(int i = 0 ; i <list.size(); i++){
User u = list.get(i); //这句会出错,因为你list集合中存储的是数组不是对象
}

那么什么时候是对象、什么时候是数组呢!
好像、只查询一个字段的时候、返回的是Object、查询俩个、或者两个以上字段的都是数组(当然、我不确定哈~~~好想是这样的、LZ自己试一下! 我也试一下)
我也只记得个大概、希望大侠们给说说、!其实呢!LZ最好还是买一本Hibernate的书好好啃啃!!!

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧