1
//首先记得要导入hibernate的相关jar包
<?xml version="1.0" encoding="UTF-8"?> 2 3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>cn.hibernate</groupId> 8 <artifactId>demo3</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <packaging>war</packaging> 11 12 <name>demo3 Maven Webapp</name> 13 <!-- FIXME change it to the project's website --> 14 <url>http://www.example.com</url> 15 16 <properties> 17 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 18 <maven.compiler.source>1.8</maven.compiler.source> 19 <maven.compiler.target>1.8</maven.compiler.target> 20 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 21 22 <junit.version>4.12</junit.version> 23 <mysql.version>5.1.6</mysql.version> 24 <c3p0.version>0.9.1.2</c3p0.version> 25 <commonspool2.version>2.3</commonspool2.version> 26 <commonsdbutils-beanutils.version>1.6</commonsdbutils-beanutils.version> 27 <servletapi.version>3.1.0</servletapi.version> 28 29 30 <!--web层需要用到的--> 31 <jstl.version>1.2</jstl.version> 32 <standard.version>1.1.2</standard.version> 33 <fastjson.version>1.2.47</fastjson.version> 34 35 <!--hibernate依赖包--> 36 <hibernate.version>5.4.0.Final</hibernate.version> 37 <!--log4j日志包--> 38 <log4j.version>1.2.17</log4j.version> 39 <!--jta事务包--> 40 <jta.version>1.1</jta.version> 41 </properties> 42 43 <dependencies> 44 <!--junit测试包--> 45 <dependency> 46 <groupId>junit</groupId> 47 <artifactId>junit</artifactId> 48 <version>${junit.version}</version> 49 <scope>test</scope> 50 </dependency> 51 52 <!--导入hibernate框架的核心依赖--> 53 <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> 54 <dependency> 55 <groupId>org.hibernate</groupId> 56 <artifactId>hibernate-core</artifactId> 57 <version>${hibernate.version}</version> 58 </dependency> 59 <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager --> 60 <dependency> 61 <groupId>org.hibernate</groupId> 62 <artifactId>hibernate-entitymanager</artifactId> 63 <version>${hibernate.version}</version> 64 </dependency> 65 66 <!--log4j日志包--> 67 <dependency> 68 <groupId>log4j</groupId> 69 <artifactId>log4j</artifactId> 70 <version>${log4j.version}</version> 71 </dependency> 72 73 <!--jta事务包--> 74 <!-- https://mvnrepository.com/artifact/javax.transaction/jta --> 75 <dependency> 76 <groupId>javax.transaction</groupId> 77 <artifactId>jta</artifactId> 78 <version>${jta.version}</version> 79 </dependency> 80 81 <!--mysql驱动包--> 82 <dependency> 83 <groupId>mysql</groupId> 84 <artifactId>mysql-connector-java</artifactId> 85 <version>${mysql.version}</version> 86 </dependency> 87 <dependency> 88 <groupId>org.junit.jupiter</groupId> 89 <artifactId>junit-jupiter-api</artifactId> 90 <version>RELEASE</version> 91 <scope>compile</scope> 92 </dependency> 93 <dependency> 94 <groupId>org.testng</groupId> 95 <artifactId>testng</artifactId> 96 <version>RELEASE</version> 97 <scope>compile</scope> 98 </dependency> 99 100 <!--<!–javax.servlet.api用于编译环境–>--> 101 <!--<dependency>--> 102 <!--<groupId>javax.servlet</groupId>--> 103 <!--<artifactId>javax.servlet-api</artifactId>--> 104 <!--<version>${servletapi.version}</version>--> 105 <!--<scope>provided</scope>--> 106 <!--</dependency>--> 107 108 <!--<!–c3p0相关–>--> 109 <!--<dependency>--> 110 <!--<groupId>c3p0</groupId>--> 111 <!--<artifactId>c3p0</artifactId>--> 112 <!--<version>${c3p0.version}</version>--> 113 <!--</dependency>--> 114 <!--<dependency>--> 115 <!--<groupId>commons-beanutils</groupId>--> 116 <!--<artifactId>commons-beanutils</artifactId>--> 117 <!--<version>${commonsdbutils-beanutils.version}</version>--> 118 <!--</dependency>--> 119 <!--<dependency>--> 120 <!--<groupId>commons-dbutils</groupId>--> 121 <!--<artifactId>commons-dbutils</artifactId>--> 122 <!--<version>${commonsdbutils-beanutils.version}</version>--> 123 <!--</dependency>--> 124 <!--<dependency>--> 125 <!--<groupId>org.apache.commons</groupId>--> 126 <!--<artifactId>commons-pool2</artifactId>--> 127 <!--<version>${commonspool2.version}</version>--> 128 <!--</dependency>--> 129 130 <!--<!–jstl–>--> 131 <!--<dependency>--> 132 <!--<groupId>javax.servlet</groupId>--> 133 <!--<artifactId>jstl</artifactId>--> 134 <!--<version>${jstl.version}</version>--> 135 <!--</dependency>--> 136 <!--<!–standard–>--> 137 <!--<dependency>--> 138 <!--<groupId>taglibs</groupId>--> 139 <!--<artifactId>standard</artifactId>--> 140 <!--<version>${standard.version}</version>--> 141 <!--</dependency>--> 142 <!--<dependency>--> 143 <!--<groupId>com.alibaba</groupId>--> 144 <!--<artifactId>fastjson</artifactId>--> 145 <!--<version>${fastjson.version}</version>--> 146 <!--</dependency>--> 147 </dependencies> 148 149 150 151 <build> 152 <finalName>demo3</finalName> 153 <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> 154 <plugins> 155 <plugin> 156 <artifactId>maven-clean-plugin</artifactId> 157 <version>3.1.0</version> 158 </plugin> 159 <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --> 160 <plugin> 161 <artifactId>maven-resources-plugin</artifactId> 162 <version>3.0.2</version> 163 </plugin> 164 <plugin> 165 <artifactId>maven-compiler-plugin</artifactId> 166 <version>3.8.0</version> 167 </plugin> 168 <plugin> 169 <artifactId>maven-surefire-plugin</artifactId> 170 <version>2.22.1</version> 171 </plugin> 172 <plugin> 173 <artifactId>maven-war-plugin</artifactId> 174 <version>3.2.2</version> 175 </plugin> 176 <plugin> 177 <artifactId>maven-install-plugin</artifactId> 178 <version>2.5.2</version> 179 </plugin> 180 <plugin> 181 <artifactId>maven-deploy-plugin</artifactId> 182 <version>2.8.2</version> 183 </plugin> 184 </plugins> 185 </pluginManagement> 186 </build> 187 </project>
然后记得配置hibernate的核心配置文件
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE hibernate-configuration SYSTEM 3 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 4 <!--hibernate核心配置文件--> 5 <hibernate-configuration> 6 <session-factory> 7 <!--数据库方言--> 8 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 9 <!--数据库连接驱动--> 10 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 11 <!-- 数据库url --> 12 <property name="hibernate.connection.url">jdbc:mysql://localhost/school</property> 13 <!--数据库用户名--> 14 <property name="hibernate.connection.username">root</property> 15 <!--数据库密码--> 16 <property name="hibernate.connection.password">root</property> 17 18 <!--数据库线程安全--> 19 <property name="hibernate.current_session_context_class">thread</property> 20 <property name="hibernate.show_sql">true</property><!-- 显示 sql语句 --> 21 <!-- 自动格式化 sql 语句 --> 22 <property name="hibernate.format_sql">true</property> 23 <!-- 如果数据库中没有相对应的表,就会自动创建; --> 24 <property name="hibernate.hbm2ddl.auto">update</property> 25 <!-- 加载对象关系映射文件 --> 26 <!--<mapping resource="mapper/MyUser.hbm.xml"/>--> 27 <mapping resource="mapper/Role.hbm.xml"/> 28 29 </session-factory> 30 </hibernate-configuration>
如果你不是用的注解方法,则需要配置映射文件
1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD//EN" 4 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 5 <!--对象关系映射文件--> 6 <hibernate-mapping> 7 <!--注意,完整的类路径--> 8 <class name="cn.hibernate.Role" table="tblrole"> 9 <id name="rid" type="int" column="rid"> 10 <!--主键生成策略,自增长 : native--> 11 <generator class="native"/> 12 </id> 13 <!--注意完整的类型路径--> 14 <property name="rname" column="rname" type="java.lang.String"/> 15 <!----> 16 <property name="rcreatedate" column="rcreatedate" type="java.util.Date" /> 17 <property name="rmodifydate" column="rmodifydate" type="java.util.Date" /> 18 </class> 19 </hibernate-mapping>
简单的用法:
1 package cn.test; 2 3 import cn.hibernate.Role; 4 import cn.util.HibernateUtil; 5 import org.hibernate.Session; 6 import org.hibernate.SessionFactory; 7 import org.hibernate.Transaction; 8 import org.hibernate.boot.registry.StandardServiceRegistry; 9 import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 10 import org.hibernate.cfg.Configuration; 11 import org.junit.jupiter.api.Test; 12 13 import java.util.Date; 14 import java.util.List; 15 16 public class TestRole { 17 18 /** 19 * 增加角色对象 20 */ 21 @Test 22 public void doInsertRole(){ 23 Role role = new Role(); 24 role.setRname("治安人员"); 25 role.setRcreatedate(new Date()); 26 role.setRmodifydate(new Date()); 27 28 29 /** 30 * 可以将下面的几行带作为一个公共方法 31 */ 32 // //加载无参,表示核心文件按照约定写 33 // Configuration configure = new Configuration().configure(); 34 // //注册服务于配置 35 // StandardServiceRegistry build = new StandardServiceRegistryBuilder().configure().build(); 36 // //获取session工厂 37 // SessionFactory sessionFactory = configure.buildSessionFactory(); 38 // //获取session对象 39 // Session session = sessionFactory.openSession(); 40 41 42 43 44 //通过工具类,创建一个session对象 45 Session session = HibernateUtil.getSession(); 46 //通过session开启事务返回一个事务对象对象 47 Transaction transaction = session.beginTransaction(); 48 //使用hibernate框架提供的方法,开始做业务 49 session.save(role); 50 //事务提交 51 transaction.commit(); 52 //释放资源 53 session.close(); 54 //打印语句,查看是否成功 55 System.out.println("新增一个角色成功"); 56 } 57 58 /** 59 * 删除角色对象 60 */ 61 @Test 62 public void doDeleteRole(){ 63 Role role = new Role(); 64 role.setRid(8); 65 //通过工具类,拿到session对象 66 Session session = HibernateUtil.getSession(); 67 //开启事务 68 Transaction transaction = session.beginTransaction(); 69 //做业务 70 session.delete(role); 71 //提交事务 72 transaction.commit(); 73 //释放资源 74 HibernateUtil.close(); 75 //打印语句,查看删除是否城城 76 System.out.println("删除一个角色成功"); 77 } 78 79 /** 80 * 修改一个角色 81 */ 82 @Test 83 public void doUpdateRole(){ 84 // Role role = new Role(); 85 // role.setRid(7); 86 // role.setRname("维安人员"); 87 // role.setRcreatedate(new Date()); 88 // role.setRmodifydate(new Date()); 89 90 //获取session对象 91 Session session = HibernateUtil.getSession(); 92 //通过session开启事务 93 Transaction transaction = session.beginTransaction(); 94 //做实物 95 session.update(new Role(7,"前台小姐姐",new Date())); 96 //提交事务 97 transaction.commit(); 98 //释放资源 99 HibernateUtil.close(); 100 //打印输出语句,查看是否成功 101 System.out.println("修改一个角色对象成功"); 102 } 103 104 /** 105 * 如果找到了id,则修改,如果没有这个id,则增加 106 */ 107 @Test 108 public void saveOrUpdateRole(){ 109 Role role = new Role(); 110 role.setRname("啊法"); 111 Session session = HibernateUtil.getSession(); 112 //记住必须要开启事务 113 Transaction transaction = session.beginTransaction(); 114 session.saveOrUpdate(role); 115 //关闭事务 116 transaction.commit(); 117 //释放资源 118 HibernateUtil.close(); 119 System.out.println("如果找到了id,则修改,如果没有这个id,则增加"); 120 } 121 122 /** 123 * 查询一个 124 */ 125 @Test 126 public void findRoleByRid(){ 127 Session session = HibernateUtil.getSession(); 128 Role load = session.load(Role.class, 7); 129 HibernateUtil.close(); 130 System.out.println("执行查询一个角色"+load); 131 } 132 133 /** 134 * 查询全部,需要用到HQL语句 135 */ 136 @Test 137 public void findRoleAll(){ 138 Session session = HibernateUtil.getSession(); 139 List from_role_r = session.createQuery("from Role r").list(); 140 HibernateUtil.close(); 141 from_role_r.forEach(a-> System.out.println(a)); 142 } 143 144 /** 145 * 分页查询 146 * 查询不需要事务的!! 147 */ 148 @Test 149 public void findRoleLimit(){ 150 Role role = new Role(); 151 int start = 3; 152 int pagesize = 2; 153 Session session = HibernateUtil.getSession(); 154 List list = session.createQuery(" from Role r").setFirstResult((start - 1) * pagesize).setMaxResults(pagesize).list(); 155 list.forEach(a-> System.out.println(a)); 156 } 157 }