Hibernate(1)-MySQL
1.hibernate 实现数据库表与实体类的关联
2.hibernate 实现增删改查的方法
1.hiberbate 实现数据库表与实体类的关联有两种方法:
①实体类注释,配置文件扫描该实体类
附配置文件表头实例:
1 <!DOCTYPE hibernate-configuration PUBLIC 2 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 3 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 4 <hibernate-configuration> 5 <session-factory> 6 <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 7 <property name="connection.url">jdbc:mysql://localhost:3306/firstdatabase?useUnicode=true&characterEncoding=UTF-8</property> 8 <property name="connection.username">root</property> 9 <property name="connection.password">123</property> 10 <property name="connection.pool_size">3</property><!-- 最大连接数 --> 11 <property name="hibernate.hbm2ddl.auto">update</property> 12 13 <!-- 数据库方言mysql --> 14 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 15 <!-- 在控制台输出sql语句 --> 16 <property name="hibernate.show_sql">true</property> 17 <!-- 美化sql语句 --> 18 <property name="hibernate.format_sql">true</property> 19 <!-- 映射实体类 --> 20 <mapping class="com.entity.UserBankAccount"></mapping> 21 <mapping class="com.entity.TbUser"></mapping> 22 <!-- 映射文件(映射文件)的路径 --> 23 <mapping resource="com/entity/Teacher.hbm.xml"/> 24 </session-factory> 25 </hibernate-configuration>
②映射文件扫描该实体类,配置文件扫描该映射文件路径
附映射文件表头实例:
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.entity"> <class name="Teacher" table="teacher"> <id name="teacherId" column="teacher_id"> <!-- 主鍵生成機制 --> <generator class="increment"></generator> </id> <property name="teacherName" column="teacher_name" type="string"></property> <property name="courtName" column="court_name" type="string"></property> </class> </hibernate-mapping>
case:两种方法均能实现自动建表
2.hiberbate 实现增删改查的方法
增加记录>
①将内容放到对象中
sess.beginTransaction();
Student student=new Student();
student.setStudentName("张三");
student.setStudentAge(22L);
student.setStudentGender("男");
student.setStudentHobby("paly");
sess.save(student);
sess.getTransaction().commit();
②通过hql
String hql="insert into Student (studentName,studentAge,studentGender,studentHobby)"
+"select :name,:age,:gender,:hobby from Student";
sess.beginTransaction();
sess.createQuery(hql).setParameter("name", "张三").setParameter("age", 22L)
.setParameter("gender", "男").setParameter("hobby", "dance").executeUpdate();
sess.getTransaction().commit();
删除记录>
①对象
保存到对象
sess.delete(对象)
②用hql
修改记录>
①通过对象
Student student=new Student();
student=sess.get(Student.class,2L);
student.setStudentAge(16L);
②通过hql
String hql="update Student set studentAge=:age where studentName=:name "; sess.beginTransaction(); sess.createQuery(hql).setParameter("age", 18L).setParameter("name", "张三").executeUpdate(); sess.getTransaction().commit();
查询记录>
①用对象只能通过Id查询
student=sess.get(Student.class,2L); System.out.println(student.getStudentId()+"---"+ student.getStudentName()+"---"+student.getStudentAge()+"---"+student.getStudentHobby()+"---" +student.getStudentGender());
②通过List
List<Student> list=sess.createQuery(hql).setParameter("name", "张三").getResultList();
if(!list.isEmpty()){
for(int i=0;i<list.size();i++){
Student student1=list.get(i);
System.out.println(student1.getStudentId()+"---"+
student1.getStudentName()+"---"+student1.getStudentAge()+"---"+student1.getStudentHobby()+"---"
+student1.getStudentGender());
}
}

浙公网安备 33010602011771号