1.导入jar包
2.创建实体类Category
package pojo;
//import java.util.List;
public class Category {
private String name;
private int id;
// private List<Product> products;//每个分类下有一个产品集合
// List<List<Product>> productsByRow;//产品列表的每一行(首页)
/*public List<List<Product>> getProductsByRow() {
return productsByRow;
}
public void setProductsByRow(List<List<Product>> productsByRow) {
this.productsByRow = productsByRow;
}
public List<Product> getProducts() {
return products;
}
public void setProducts(List<Product> products) {
this.products = products;
}*/
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "id:"+this.getId()+",name:"+this.getName();
}
}
3.配置实体类对应的配置文件Category.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/HIbernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="pojo">
<class name="Category" table="category">
<id name="id" column="id" type="integer">
<generator class="native"></generator>
</id>
<property name="name" type="string"></property>
</class>
</hibernate-mapping>
4.配置hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/HIbernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 基本配置 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/tmall?characterEncoding=UTF-8</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 其他配置 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<property name="javax.persistence.validation.mode">none</property>
<!-- 映射文件 -->
<mapping resource="pojo/Category.hbm.xml"/>
</session-factory>
</hibernate-configuration>
5.测试
package test;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import pojo.Category;
public class TestHibernate {
public static void main(String[] args) {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
Query query = session.createQuery("from Category c where c.name = ?");
query.setString(0, "测试类别test");
List<Category> list = query.list();
for(Category c:list){
System.out.println(c);
}
session.getTransaction().commit();
session.close();
sessionFactory.close();
}
}
一些错误信息:
>
org.hibernate.MappingException: entity class not found
解决:对应的映射文件的class name 要写绝对路径
>
org.hibernate.HibernateException: Unable to get the default Bean
原因:在hibernate.cfg.xml的配置中如果没有配置<property name="javax.persistence.validation.mode"></property>的话,默认它是auto的,它会自动去classpath下寻找validator
解决:在配置文件中配置<property name="javax.persistence.validation.mode">none</property>
>
org.hibernate.MappingException: not found while looking for property: id
解决:映射文件中把class每个属性的值加上类型
>
org.hibernate.MappingNotFoundException: resource:ssh.pojo/Category.hbm.xml not found
解决:把ssh.pojo/Category.hbm.xml中的点改成斜杠即可ssh/pojo/Category
注意:
>
Query query = session.createQuery("from Category c where c.name = ?");
query.setString(0, "测试类别test");
1.Catgeory c<br>
2.参数从0开始索引