如何在myeclipse中进行hibernate的增删改查

 我来答
育知同创教育
2017-11-09 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
在myeclipse中进行hibernate的增删改查
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
1.创建数据库驱动连接
单击myeclipse工作空间的右上角的编辑模式,选择Myeclipse Database Explorer。

新建数据库连接
右击左侧的面板,选择new,新建一个数据库连接。
配置连接文件
根据你的数据库选择不同的数据连接方式,填写你要创建的连接的名字,URL等信息,如图。
最重要的是加载驱动,没有的话到网上下载自己数据库的驱动。
我这里是JDBC,连接Mysql数据库。单击next——finish。

选中你新建的数据库,然后单击连接按钮开始进行连接或者双击新建的数据库名连接,注意:一定保证你的数据库服务正常工作,否则是连接不上的。
2.MyEclipse怎么自动建立持久类映射.hbm.xml
连接上之后就可以建立持久类映射了。
打开数据库中的table,选中需要反向工程生成映射的表

选中需要反向工程生成映射的表,右键->Hibernate Reverse Engineering

然后配置一些数据

第一步就是配置数据表到实体类之间的映射。
Java src folder ——指定把反向工程生成的文件放入到那个项目中(这里要指向到src文件夹才可以)
Java package ——实体类和映射文件存放到哪个包当中。(这里通常是项目中的entity包里)
Create POJO<>DB Table mapping information —— 是否生成对应的映射文件(*.hbm.xml文件)
Add Hibernate Mapping Annotations to POJO —— 使用注解配置实体类(注意!上述两者中选择一种即可,要么是实体类+.hbm.xml,实体类+注解)
Java Data Object (POJO <> DB Table) —— 是否生成实体类文件(注意!下面的Createabstract class不要选!因为实体类不需要抽象父类)
finish后在上面所配置的包中就会有实体类和映射文件了

3.Myeclipse自动创建hibernate
在这之前建立web object项目和mysql中的数据库就不说了、、这里我的项目名为HibernateTest数据库为hospital,这是随便的啦、、、
工具:myeclipse 10
过程:选中项目,右键选择:MyEclipse -> Project Facets[Capabilities] -> Install HibernateFacet,选择版本
然后next

next选择数据库连接

next放置hibernate的session工厂

finish后项目中就会自动加载hibernate的jar包等,项目中的hibernate就已经好了。。
建立简单增删查改
我没有写dao接口、、、
daoImpl.java
public class daoImpl { //增加User
public void addUser(Users user) {
Session session = HibernateSessionFactory.getSession();
Transaction ts = null; try{
log4jInput(user);

ts = session.beginTransaction();
session.save(user);
ts.commit();
}catch(Exception ex){ //回滚
ts.rollback();
ex.printStackTrace();
}finally{
HibernateSessionFactory.closeSession();
}
}
//删除User表中的数据 根据主键删除
public boolean deleteUser(Users user){
Session session=HibernateSessionFactory.getSession();
Transaction ts = null; try{
log4jInput(user);
ts = session.beginTransaction();
session.delete(user);
ts.commit(); return true;
}catch(Exception ex){
ts.rollback();
System.out.println("delete");
ex.printStackTrace(); return false;
}finally{
HibernateSessionFactory.closeSession();
}
} //改User表中的数据 根据主键更改其他信息
public boolean updateUser(Users user){
Session session=HibernateSessionFactory.getSession();
Transaction ts = null; try{
log4jInput(user);

ts = session.beginTransaction();
session.update(user);
ts.commit(); return true;
}catch(Exception ex){
ts.rollback();
System.out.println("update");
ex.printStackTrace(); return false;
}finally{
HibernateSessionFactory.closeSession();
}
} //查询User表 1.条件where后面的条件 2.占位符对应的数据 3.value对应的数据类型 在没有时为null
public List<Users> queryUser(String where,String[] value,Type[] type){
Session session = HibernateSessionFactory.getSession();
Criteria criteria=null; if(where!=null){
criteria = session.createCriteria(Users.class)
.add(Restrictions.sqlRestriction(where, value, type));
}else{
criteria = session.createCriteria(Users.class);
}
@SuppressWarnings("unchecked")
List<Users> users=criteria.list();
HibernateSessionFactory.closeSession(); return users;
}
//log4j的使用 添加log4j的jar,将log4j.properties文件放入src或web info文件下
public void log4jInput(Object o){
Logger log=Logger.getLogger("org.zblog.test");
log.info(o.toString());
}}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283

也是直接在bean中测试的
public class UserBean { public static void main(String[]a){
addUser(); //deleteUser();
//updateUser();
//queryUser();
} public static void addUser(){
Users user=new Users();
user.setUsername("root");
user.setPassword("root");
user.setRole("admin");
dao d=new dao();
d.addUser(user);
} public static void deleteUser(){
Users user=new Users();
user.setUid(15);//主键id
dao d=new dao();
System.out.print(d.deleteUser(user));
} //根据主键更改其他信息
public static void updateUser(){
Users user=new Users(); //主键也要设置
user.setUid(14);//主键id
user.setUsername("老王");
user.setPassword("1234");
user.setRole("admin");
dao d=new dao();
d.updateUser(user);
} public static void queryUser(){
dao d=new dao();
String[] value={"admin"};
Type[] type={Hibernate.STRING};
List<Users> li=d.queryUser("username=?",value,type); for(int i=0;i<li.size();i++){
System.out.println(li.get(i).toString());
}
}
}123456789101112131415161718192021222324252627282930313233343536373839404142434445

可以直接执行了,可能会出现log4j的警告,但这不会影响数据库里的修改
log4j的警告:
log4j:WARN No appenders could be found for logger(org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
这是log4j没有配置引起的,可以将它的配置文件log4j.properties放置在src下就可以了。
log4j.properties的内容是:
log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.category.org.zblog=ERROR,A1
log4j.category.org.zblog=INFO,A2
log4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
log4j.appender.A2=org.apache.log4j.RollingFileAppenderlog4j.appender.A2.File=E:/study/log4j/zhuwei.htmllog4j.appender.A2.MaxFileSize=500KB
log4j.appender.A2.MaxBackupIndex=1log4j.appender.A2.layout=org.apache.log4j.HTMLLayout
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式