publicclassCategoryDAOImplimplementszhongfucheng.dao.CategoryDao{@OverridepublicvoidaddCategory(Categorycategory){QueryRunnerqueryRunner=newQueryRunner(Utils2DB.getDataSource());Stringsql="INSERT INTO category (id, name, description) VALUES(?,?,?)";try{queryRunner.update(sql,newObject[]{category.getId(),category.getName(),category.getDescription()});}catch(SQLExceptione){thrownewRuntimeException(e);}}@OverridepublicCategoryfindCategory(Stringid){QueryRunnerqueryRunner=newQueryRunner(Utils2DB.getDataSource());Stringsql="SELECT * FROM category WHERE id=?";try{Categorycategory=(Category)queryRunner.query(sql,id,newBeanHandler(Category.class));returncategory;}catch(SQLExceptione){thrownewRuntimeException(e);}}@OverridepublicList<Category>getAllCategory(){QueryRunnerqueryRunner=newQueryRunner(Utils2DB.getDataSource());Stringsql="SELECT * FROM category";try{List<Category>categories=(List<Category>)queryRunner.query(sql,newBeanListHandler(Category.class));returncategories;}catch(SQLExceptione){thrownewRuntimeException(e);}}}
<?xml version="1.0" ?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><!--
This mapping demonstrates content-based discrimination for the
table-per-hierarchy mapping strategy, using a formula
discriminator.
--><hibernate-mappingpackage="org.hibernate.test.array"><classname="A"lazy="true"table="aaa"><idname="id"><generatorclass="native"/></id><arrayname="bs"cascade="all"fetch="join"><keycolumn="a_id"/><list-indexcolumn="idx"/><one-to-manyclass="B"/></array></class><classname="B"lazy="true"table="bbb"><idname="id"><generatorclass="native"/></id></class></hibernate-mapping>
<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><propertyname="connection.url."/><propertyname="connection.driver_class"/><propertyname="connection.username"/><propertyname="connection.password"/><!-- DB schema will be updated if needed --><!-- <property name="hbm2ddl.auto">update</property> --></session-factory></hibernate-configuration>
packagezhongfucheng.domain;importorg.hibernate.SessionFactory;importorg.hibernate.Transaction;importorg.hibernate.cfg.Configuration;importorg.hibernate.classic.Session;/**
* Created by ozc on 2017/5/6.
*/publicclassApp{publicstaticvoidmain(String[]args){//创建对象Useruser=newUser();user.setPassword("123");user.setCellphone("122222");user.setUsername("nihao");//获取加载配置管理类Configurationconfiguration=newConfiguration();//不给参数就默认加载hibernate.cfg.xml文件,configuration.configure();//创建Session工厂对象SessionFactoryfactory=configuration.buildSessionFactory();//得到Session对象Sessionsession=factory.openSession();//使用Hibernate操作数据库,都要开启事务,得到事务对象Transactiontransaction=session.getTransaction();//开启事务transaction.begin();//把对象添加到数据库中session.save(user);//提交事务transaction.commit();//关闭Sessionsession.close();}}
值得注意的是:JavaBean 的主键类型只能是 int 类型,因为在映射关系中配置是自动增长的,String 类型是不能自动增长的。如果是你设置了 String 类型,又使用了自动增长,那么就会报出下面的错误!
Queryquery=session.createQuery("FROM User WHERE id=?");//这里的?号是从0开始的,并不像JDBC从1开始的!query.setParameter(0,user.getId());Listlist=query.list();System.out.println(list);
//将所有的记录封装成User对象存进List集合中SQLQuerysqlQuery=session.createSQLQuery("SELECT * FROM user").addEntity(User.class);Listlist=sqlQuery.list();System.out.println(list);
packagezhongfucheng.domain;/**
* Created by ozc on 2017/5/6.
*/publicclassCompositeKeyimplementsSerializable{privateStringusername;privateStringpassword;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}}
packagezhongfucheng.domain;/**
* Created by ozc on 2017/5/6.
*/publicclassUser2{//在User对象中维护这个主键对象privateCompositeKeykey;privateStringcellphone;publicCompositeKeygetKey(){returnkey;}publicvoidsetKey(CompositeKeykey){this.key=key;}publicStringgetCellphone(){returncellphone;}publicvoidsetCellphone(Stringcellphone){this.cellphone=cellphone;}}