标签:
<!-- struts2的过滤器支持 --> <filter> <filter-name>struts2</filter-name> <!-- 表示用了struts2的过滤器 --> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <!-- 表示过滤所有请求 --> <url-pattern>/*</url-pattern> </filter-mapping>
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="default" namespace="/" extends="struts-default"> </package> </struts>
配置hibernate.cfg.xml配置文档
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <!--声明Hibernate配置文件的开始 --> <hibernate-configuration> <!--表明以下的配置是针对session-factory配置的,SessionFactory是Hibernate中的一个类,这个类主要负责保存HIbernate的配置信息,以及对Session的操作 --> <session-factory> <!-- hibernate数据库方言 --> <!-- 一个Hibernate Dialect类名允许Hibernate针对特定的关系数据库生成优化的SQL. 取值 full.classname.of.Dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!--配置数据库的驱动程序,Hibernate在连接数据库时,需要用到数据库的驱动程序 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!--设置数据库的连接url:jdbc:mysql://localhost/hibernate,其中localhost表示mysql服务器名称,此处为本机,hibernate是数据库名 此处为【lyyp_db】 --> <!-- 【?useUnicode=true&characterEncoding=utf-8】 数据库插入中文乱码,其中【将&进行转码 = & 】--> <property name="connection.url">jdbc:mysql://localhost:3306/lyyp_db?useUnicode=true&characterEncoding=utf-8</property> <!--连接数据库是用户名 --> <property name="connection.username">root</property> <!--连接数据库是密码 --> <property name="connection.password">******</property> <!--是否在后台显示Hibernate用到的SQL语句,开发时设置为true,便于查错,程序运行时可以在Eclipse的控制台显示Hibernate的执行Sql语句。项目部署后可以设置为false,提高运行效率 --> <property name="show_sql">true</property> <!-- 在log和console中打印出更漂亮的SQL。 取值 true | false --> <property name="format_sql">true</property> <!-- 在SessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库. 使用 create-drop时,在显式关闭SessionFactory时,将drop掉数据库schema. 取值 validate | update | create | create-drop --> <property name="hbm2ddl.auto">update</property> <!-- 使用getCurrentSession方式打开会话 --> <!-- Enable Hibernate‘s automatic session context management --> <property name="current_session_context_class">thread</property> </session-factory> </hibernate-configuration>
package model; /** * 用户表的实体类 * * @author Buddha * */ public class Users { private int uid; private String username; private String password; // 不带参数的构造方法 public Users() { } // 创建一个带参数的构造方法 public Users(int uid, String username, String password) { // super(); this.uid = uid; this.username = username; this.password = password; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
Students.java【学生表实体类】
package model; import java.util.Date; /** * 学生表实体类 * * @author Buddha * */ public class Students { private String sid;// 学号 private String sname;// 学生姓名 private String gender;// 性别 private Date birthday;// 生日 private String address;// 地址 // 不带参数的构造函数 public Students() { } // 创建一个带参数的构造函数 public Students(String sid, String sname, String gender, Date birthday, String address) { //super(); this.sid = sid; this.sname = sname; this.gender = gender; this.birthday = birthday; this.address = address; } public String getSid() { return sid; } public void setSid(String sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } // 生成一个同String()方法 @Override public String toString() { return "Students [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", birthday=" + birthday + ", address=" + address + "]"; } }
<?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"> <hibernate-mapping> <!-- 此处类名要写完整,也就是实体类下的用户类 talbe为指定的表名 --> <class name="model.Users" table="USERS"> <!-- 主键 此处为用户表的主键 也就是uid 指定类型为整型 --> <id name="uid" type="int"> <!-- 自动增长 --> <generator class="native" /> </id> <!-- 用户名 ,字符串类型, 长度=16 --> <property name="username" type="java.lang.String" length="16" /> <!-- 密码 ,字符串类型, 长度=20 --> <property name="password" type="java.lang.String" length="20" /> </class> </hibernate-mapping>
Students.hbm.xml代码:
<?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"> <hibernate-mapping> <!-- 此处类名要写完整,也就是实体类下的用户类 talbe为指定的表名 --> <class name="model.Students" table="STUDENTS"> <!-- 主键 此处为学生表的主键 也就是sid 指定类型为字符串 指定字段的名字column="SID"可以不写 【length="8"】指定字符长度 --> <id name="sid" type="java.lang.String" length="8"> <!-- 手动输出 --> <generator class="assigned" /> </id> <!-- 学生姓名 ,字符串类型, 长度=16 --> <property name="sname" type="java.lang.String" length="16" /> <!-- 性别, 字符串类型 ,长度=2 --> <property name="gender" type="java.lang.String" length="2" /> <!-- 生日, 时间类型,只保留年月日,无时分秒 --> <property name="birthday" type="date" /> <!-- 地址, 字符串类型, 长度=20 --> <property name="address" type="java.lang.String" length="20" /> </class> </hibernate-mapping>
将映射文件Users.hbm.xml和Students.hbm.xml添加到hibernate.cfg.xml配置文档中
<!--将映射文件Users.hbm.xml和Students.hbm.xml添加到hibernate.cfg.xml配置文档中--> <mapping resource="model/Students.hbm.xml" /> <mapping resource="model/Users.hbm.xml" />
package model; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.junit.Test; /** * 测试生成表结构 * * @author Buddha * */ public class TestStudents { @Test public void testSchemaExport() { // 创建配置对象 【默认读取的是hibernate.cfg.xml文件】 Configuration config = new Configuration().configure(); // 创建服务注册对象 ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()) .buildServiceRegistry(); // 创建sessionFactory SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry); // 创建session对象 Session session = sessionFactory.getCurrentSession(); // 创建SchemaExport对象 SchemaExport export = new SchemaExport(config); // 生成表结构 输出sql语句 export.create(true, true); } }
控制台输出结果图:
Navicat for MySQL数据库效果截图
====================================
<!--将映射文件Users.hbm.xml和Students.hbm.xml添加到hibernate.cfg.xml配置文档中--> <mapping resource="model/Students.hbm.xml" /> <mapping resource="model/Users.hbm.xml" />
在使用Hibernate向Mysql数据库中插入数据时,出现如下异常:
// 创建配置对象 Configuration config = new Configuration(); <!--更改为:--> Configuration config = new Configuration().configure();
<!--设置数据库的连接url:jdbc:mysql://localhost/hibernate,其中localhost表示mysql服务器名称,此处为本机,hibernate是数据库名 此处为【lyyp_db】 --> <!-- 【?useUnicode=true&characterEncoding=utf-8】 数据库插入中文乱码,其中【将&进行转码 为 & 】--> <property name="connection.url">jdbc:mysql://localhost:3306/lyyp_db?useUnicode=true&characterEncoding=utf-8</property>
标签:
原文地址:http://www.cnblogs.com/shakyamuni/p/5135807.html