核心

利用HibernateTools,从POJO类,Mapping映射文件,数据库表有其中的一项,就能生成其他两项。

概述

在使用Hibernate开发系统持久层时,按照一般开发流程

1、分析业务

2、获得系统实体类

3、写Hibernate的mapping映射文件

4、根据映射文件,生成数据库表

以上这几步是Hibernate开发的起始。根据开发习惯的不同,有些项目组可能会先写POJO类,有的项目可能会先设计数据库,有的项目组可能先写映射文件,其实完成其中的一项时,类结构或者表结构就可以确定了。

既然已经能确定结构了,完全可以使用工具来代替手工完成剩余的工作。

前提

安装Eclipse插件HibernateTools,eclipse插件安装百度下教程非常多,建议采用copy安装或者link安装,再有就是HibernateTools的版本对应着特定的Eclipse版本,所以安装前请先检查自己的eclipse版本。

然后建立项目,本文建立的是Dynamic Web Project,采用了mysql数据库,建立项目后,引入mysql的驱动jar,引入Hibernate(本文用了4.3.5版本)的包,即lib下required文件夹中所有jar

安装完了插件,首先利用tool生成Hibernate配置文件,项目右键-->new,安装完HibernateTools后,多了4种类型的文件,选择第一种:

根据使用的数据库,填入必须的属性:

生成hibernate.cfg.xml的代码:

  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
  8. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  9. <property name="hibernate.connection.password">123456</property>
  10. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
  11. <property name="hibernate.connection.username">root</property>
  12. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  13. <property name="hibernate.search.autoregister_listeners">false</property>
  14. </session-factory>
  15. </hibernate-configuration></span>

相互转换

接下可以进入正题了,本文分别从三项中的每一项入手,生成其他两项。

思路一:由POJO类生成mapping映射文件和DDL

POJO类的代码写起来非常方便,因此首先介绍这种方法,个人认为这种方法效率最高。首先建立两个POJO类

  1. package org.hibernate.test;
  2. public class Student implements java.io.Serializable {
  3. private int id;
  4. private String name;
  5. public Student() {
  6. }
  7. public Student(int id) {
  8. this.id = id;
  9. }
  10. public Student(int id, String name) {
  11. this.id = id;
  12. this.name = name;
  13. }
  14. public int getId() {
  15. return this.id;
  16. }
  17. public void setId(int id) {
  18. this.id = id;
  19. }
  20. public String getName() {
  21. return this.name;
  22. }
  23. public void setName(String name) {
  24. this.name = name;
  25. }
  26. }
  1. package org.hibernate.test;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class Class implements java.io.Serializable {
  5. private int id;
  6. private String name;
  7. private List students = new ArrayList(0);
  8. public Class() {
  9. }
  10. public Class(int id) {
  11. this.id = id;
  12. }
  13. public Class(int id, String name, List students) {
  14. this.id = id;
  15. this.name = name;
  16. this.students = students;
  17. }
  18. public int getId() {
  19. return this.id;
  20. }
  21. public void setId(int id) {
  22. this.id = id;
  23. }
  24. public String getName() {
  25. return this.name;
  26. }
  27. public void setName(String name) {
  28. this.name = name;
  29. }
  30. public List getStudents() {
  31. return this.students;
  32. }
  33. public void setStudents(List students) {
  34. this.students = students;
  35. }
  36. }

接下来一步一步生成另外两项,首先项目右键-->new,选择Hibernate下面的第四项,建立mapping映射文件,根据已存在的POJO类,生成Mapping文件

添加两个已经存在的POJO类

下一步,可以预先查看生成的hbm.xml文件,有特殊要求的可以再生成的文件基础上稍作修改。

生成代码:

  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  4. <!-- Generated 2014-5-30 21:29:20 by Hibernate Tools 4.0.0 -->
  5. <hibernate-mapping>
  6. <class name="org.hibernate.test.Student" table="STUDENT">
  7. <id name="id" type="int">
  8. <column name="ID" />
  9. <generator class="assigned"></generator>
  10. </id>
  11. <property name="name" type="java.lang.String">
  12. <column name="NAME" />
  13. </property>
  14. </class>
  15. </hibernate-mapping></span>
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  4. <!-- Generated 2014-5-30 21:29:20 by Hibernate Tools 4.0.0 -->
  5. <hibernate-mapping>
  6. <class name="org.hibernate.test.Class" table="CLASS">
  7. <id name="id" type="int">
  8. <column name="ID" />
  9. <generator class="assigned"></generator>
  10. </id>
  11. <property name="name" type="java.lang.String">
  12. <column name="NAME" />
  13. </property>
  14. <list name="students" inverse="false" table="STUDENT" lazy="true">
  15. <key>
  16. <column name="ID" />
  17. </key>
  18. <list-index>
  19. <column name="idx" />
  20. </list-index>
  21. <one-to-many class="org.hibernate.test.Student" />
  22. </list>
  23. </class>
  24. </hibernate-mapping></span>

mapping映射文件生成了,接下来生成ddl,项目右键-->new,选择Hibernate Console  Configuration

选择好对应的项后,finish,然后需要在工具栏添加Hibernate code Generation,Windows-->Customer Perspective

然后工具栏多了一个很像运行按钮的图标,单击下拉按钮,选第二项

单击Exporters选项卡,可以看到HibernateTools工具能导出和生成的项很多,可以根据配置有针对性的选择自己想要的项,这里我们勾选Schema Export,然后单击图标1下面的Properties的Add,后出现图标2所示的窗体

选择第二项,这就是要生成我们想要的ddl,如图,当然上图还勾选了DAO Code,生成了操作试题的DAO代码(HibernateTools确实很贴心)

这是生成后的图片

ddl的建表语句:

  1. <span style="font-family:KaiTi_GB2312;font-size:18px;">create table CLASS (ID integer not null, NAME varchar(255), primary key (ID));
  2. create table STUDENT (ID integer not null, NAME varchar(255), idx integer, primary key (ID));
  3. alter table STUDENT add index FKBACA0E1BE081A5FD (ID), add constraint FKBACA0E1BE081A5FD foreign key (ID) references CLASS (ID);
  4. </span>

DAO代码如下:

  1. <span style="font-family:KaiTi_GB2312;font-size:18px;">package org.hibernate.test;
  2. // Generated 2014-5-30 23:18:05 by Hibernate Tools 4.0.0
  3. import java.util.List;
  4. import javax.naming.InitialContext;
  5. import org.apache.commons.logging.Log;
  6. import org.apache.commons.logging.LogFactory;
  7. import org.hibernate.LockMode;
  8. import org.hibernate.SessionFactory;
  9. import org.hibernate.criterion.Example;
  10. /**
  11. * Home object for domain model class Class.
  12. * @see org.hibernate.test.Class
  13. * @author Hibernate Tools
  14. */
  15. public class ClassHome {
  16. private static final Log log = LogFactory.getLog(ClassHome.class);
  17. private final SessionFactory sessionFactory = getSessionFactory();
  18. protected SessionFactory getSessionFactory() {
  19. try {
  20. return (SessionFactory) new InitialContext()
  21. .lookup("SessionFactory");
  22. } catch (Exception e) {
  23. log.error("Could not locate SessionFactory in JNDI", e);
  24. throw new IllegalStateException(
  25. "Could not locate SessionFactory in JNDI");
  26. }
  27. }
  28. public void persist(Class transientInstance) {
  29. log.debug("persisting Class instance");
  30. try {
  31. sessionFactory.getCurrentSession().persist(transientInstance);
  32. log.debug("persist successful");
  33. } catch (RuntimeException re) {
  34. log.error("persist failed", re);
  35. throw re;
  36. }
  37. }
  38. public void attachDirty(Class instance) {
  39. log.debug("attaching dirty Class instance");
  40. try {
  41. sessionFactory.getCurrentSession().saveOrUpdate(instance);
  42. log.debug("attach successful");
  43. } catch (RuntimeException re) {
  44. log.error("attach failed", re);
  45. throw re;
  46. }
  47. }
  48. public void attachClean(Class instance) {
  49. log.debug("attaching clean Class instance");
  50. try {
  51. sessionFactory.getCurrentSession().lock(instance, LockMode.NONE);
  52. log.debug("attach successful");
  53. } catch (RuntimeException re) {
  54. log.error("attach failed", re);
  55. throw re;
  56. }
  57. }
  58. public void delete(Class persistentInstance) {
  59. log.debug("deleting Class instance");
  60. try {
  61. sessionFactory.getCurrentSession().delete(persistentInstance);
  62. log.debug("delete successful");
  63. } catch (RuntimeException re) {
  64. log.error("delete failed", re);
  65. throw re;
  66. }
  67. }
  68. public Class merge(Class detachedInstance) {
  69. log.debug("merging Class instance");
  70. try {
  71. Class result = (Class) sessionFactory.getCurrentSession().merge(
  72. detachedInstance);
  73. log.debug("merge successful");
  74. return result;
  75. } catch (RuntimeException re) {
  76. log.error("merge failed", re);
  77. throw re;
  78. }
  79. }
  80. public Class findById(int id) {
  81. log.debug("getting Class instance with id: " + id);
  82. try {
  83. Class instance = (Class) sessionFactory.getCurrentSession().get(
  84. "org.hibernate.test.Class", id);
  85. if (instance == null) {
  86. log.debug("get successful, no instance found");
  87. } else {
  88. log.debug("get successful, instance found");
  89. }
  90. return instance;
  91. } catch (RuntimeException re) {
  92. log.error("get failed", re);
  93. throw re;
  94. }
  95. }
  96. public List findByExample(Class instance) {
  97. log.debug("finding Class instance by example");
  98. try {
  99. List results = sessionFactory.getCurrentSession()
  100. .createCriteria("org.hibernate.test.Class")
  101. .add(Example.create(instance)).list();
  102. log.debug("find by example successful, result size: "
  103. + results.size());
  104. return results;
  105. } catch (RuntimeException re) {
  106. log.error("find by example failed", re);
  107. throw re;
  108. }
  109. }
  110. }</span>

到此,我们就由POJO类,生成了hbm.xml文件和DDL

思路二:由hbm.xml生成POJO类和DDL

...

思路三:由数据库表(或DDL)生成POJO类和hbm.xml

...

思路二三请见下一博客

核心

利用HibernateTools,从POJO类,Mapping映射文件,数据库表有其中的一项,就能生成其他两项。

概述

在使用Hibernate开发系统持久层时,按照一般开发流程

1、分析业务

2、获得系统实体类

3、写Hibernate的mapping映射文件

4、根据映射文件,生成数据库表

以上这几步是Hibernate开发的起始。根据开发习惯的不同,有些项目组可能会先写POJO类,有的项目可能会先设计数据库,有的项目组可能先写映射文件,其实完成其中的一项时,类结构或者表结构就可以确定了。

既然已经能确定结构了,完全可以使用工具来代替手工完成剩余的工作。

前提

安装Eclipse插件HibernateTools,eclipse插件安装百度下教程非常多,建议采用copy安装或者link安装,再有就是HibernateTools的版本对应着特定的Eclipse版本,所以安装前请先检查自己的eclipse版本。

然后建立项目,本文建立的是Dynamic Web Project,采用了mysql数据库,建立项目后,引入mysql的驱动jar,引入Hibernate(本文用了4.3.5版本)的包,即lib下required文件夹中所有jar

安装完了插件,首先利用tool生成Hibernate配置文件,项目右键-->new,安装完HibernateTools后,多了4种类型的文件,选择第一种:

根据使用的数据库,填入必须的属性:

生成hibernate.cfg.xml的代码:

  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
  8. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  9. <property name="hibernate.connection.password">123456</property>
  10. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
  11. <property name="hibernate.connection.username">root</property>
  12. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  13. <property name="hibernate.search.autoregister_listeners">false</property>
  14. </session-factory>
  15. </hibernate-configuration></span>

相互转换

接下可以进入正题了,本文分别从三项中的每一项入手,生成其他两项。

思路一:由POJO类生成mapping映射文件和DDL

POJO类的代码写起来非常方便,因此首先介绍这种方法,个人认为这种方法效率最高。首先建立两个POJO类

  1. package org.hibernate.test;
  2. public class Student implements java.io.Serializable {
  3. private int id;
  4. private String name;
  5. public Student() {
  6. }
  7. public Student(int id) {
  8. this.id = id;
  9. }
  10. public Student(int id, String name) {
  11. this.id = id;
  12. this.name = name;
  13. }
  14. public int getId() {
  15. return this.id;
  16. }
  17. public void setId(int id) {
  18. this.id = id;
  19. }
  20. public String getName() {
  21. return this.name;
  22. }
  23. public void setName(String name) {
  24. this.name = name;
  25. }
  26. }
  1. package org.hibernate.test;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class Class implements java.io.Serializable {
  5. private int id;
  6. private String name;
  7. private List students = new ArrayList(0);
  8. public Class() {
  9. }
  10. public Class(int id) {
  11. this.id = id;
  12. }
  13. public Class(int id, String name, List students) {
  14. this.id = id;
  15. this.name = name;
  16. this.students = students;
  17. }
  18. public int getId() {
  19. return this.id;
  20. }
  21. public void setId(int id) {
  22. this.id = id;
  23. }
  24. public String getName() {
  25. return this.name;
  26. }
  27. public void setName(String name) {
  28. this.name = name;
  29. }
  30. public List getStudents() {
  31. return this.students;
  32. }
  33. public void setStudents(List students) {
  34. this.students = students;
  35. }
  36. }

接下来一步一步生成另外两项,首先项目右键-->new,选择Hibernate下面的第四项,建立mapping映射文件,根据已存在的POJO类,生成Mapping文件

添加两个已经存在的POJO类

下一步,可以预先查看生成的hbm.xml文件,有特殊要求的可以再生成的文件基础上稍作修改。

生成代码:

  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  4. <!-- Generated 2014-5-30 21:29:20 by Hibernate Tools 4.0.0 -->
  5. <hibernate-mapping>
  6. <class name="org.hibernate.test.Student" table="STUDENT">
  7. <id name="id" type="int">
  8. <column name="ID" />
  9. <generator class="assigned"></generator>
  10. </id>
  11. <property name="name" type="java.lang.String">
  12. <column name="NAME" />
  13. </property>
  14. </class>
  15. </hibernate-mapping></span>
  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  4. <!-- Generated 2014-5-30 21:29:20 by Hibernate Tools 4.0.0 -->
  5. <hibernate-mapping>
  6. <class name="org.hibernate.test.Class" table="CLASS">
  7. <id name="id" type="int">
  8. <column name="ID" />
  9. <generator class="assigned"></generator>
  10. </id>
  11. <property name="name" type="java.lang.String">
  12. <column name="NAME" />
  13. </property>
  14. <list name="students" inverse="false" table="STUDENT" lazy="true">
  15. <key>
  16. <column name="ID" />
  17. </key>
  18. <list-index>
  19. <column name="idx" />
  20. </list-index>
  21. <one-to-many class="org.hibernate.test.Student" />
  22. </list>
  23. </class>
  24. </hibernate-mapping></span>

mapping映射文件生成了,接下来生成ddl,项目右键-->new,选择Hibernate Console  Configuration

选择好对应的项后,finish,然后需要在工具栏添加Hibernate code Generation,Windows-->Customer Perspective

然后工具栏多了一个很像运行按钮的图标,单击下拉按钮,选第二项

单击Exporters选项卡,可以看到HibernateTools工具能导出和生成的项很多,可以根据配置有针对性的选择自己想要的项,这里我们勾选Schema Export,然后单击图标1下面的Properties的Add,后出现图标2所示的窗体

选择第二项,这就是要生成我们想要的ddl,如图,当然上图还勾选了DAO Code,生成了操作试题的DAO代码(HibernateTools确实很贴心)

这是生成后的图片

ddl的建表语句:

  1. <span style="font-family:KaiTi_GB2312;font-size:18px;">create table CLASS (ID integer not null, NAME varchar(255), primary key (ID));
  2. create table STUDENT (ID integer not null, NAME varchar(255), idx integer, primary key (ID));
  3. alter table STUDENT add index FKBACA0E1BE081A5FD (ID), add constraint FKBACA0E1BE081A5FD foreign key (ID) references CLASS (ID);
  4. </span>

DAO代码如下:

  1. <span style="font-family:KaiTi_GB2312;font-size:18px;">package org.hibernate.test;
  2. // Generated 2014-5-30 23:18:05 by Hibernate Tools 4.0.0
  3. import java.util.List;
  4. import javax.naming.InitialContext;
  5. import org.apache.commons.logging.Log;
  6. import org.apache.commons.logging.LogFactory;
  7. import org.hibernate.LockMode;
  8. import org.hibernate.SessionFactory;
  9. import org.hibernate.criterion.Example;
  10. /**
  11. * Home object for domain model class Class.
  12. * @see org.hibernate.test.Class
  13. * @author Hibernate Tools
  14. */
  15. public class ClassHome {
  16. private static final Log log = LogFactory.getLog(ClassHome.class);
  17. private final SessionFactory sessionFactory = getSessionFactory();
  18. protected SessionFactory getSessionFactory() {
  19. try {
  20. return (SessionFactory) new InitialContext()
  21. .lookup("SessionFactory");
  22. } catch (Exception e) {
  23. log.error("Could not locate SessionFactory in JNDI", e);
  24. throw new IllegalStateException(
  25. "Could not locate SessionFactory in JNDI");
  26. }
  27. }
  28. public void persist(Class transientInstance) {
  29. log.debug("persisting Class instance");
  30. try {
  31. sessionFactory.getCurrentSession().persist(transientInstance);
  32. log.debug("persist successful");
  33. } catch (RuntimeException re) {
  34. log.error("persist failed", re);
  35. throw re;
  36. }
  37. }
  38. public void attachDirty(Class instance) {
  39. log.debug("attaching dirty Class instance");
  40. try {
  41. sessionFactory.getCurrentSession().saveOrUpdate(instance);
  42. log.debug("attach successful");
  43. } catch (RuntimeException re) {
  44. log.error("attach failed", re);
  45. throw re;
  46. }
  47. }
  48. public void attachClean(Class instance) {
  49. log.debug("attaching clean Class instance");
  50. try {
  51. sessionFactory.getCurrentSession().lock(instance, LockMode.NONE);
  52. log.debug("attach successful");
  53. } catch (RuntimeException re) {
  54. log.error("attach failed", re);
  55. throw re;
  56. }
  57. }
  58. public void delete(Class persistentInstance) {
  59. log.debug("deleting Class instance");
  60. try {
  61. sessionFactory.getCurrentSession().delete(persistentInstance);
  62. log.debug("delete successful");
  63. } catch (RuntimeException re) {
  64. log.error("delete failed", re);
  65. throw re;
  66. }
  67. }
  68. public Class merge(Class detachedInstance) {
  69. log.debug("merging Class instance");
  70. try {
  71. Class result = (Class) sessionFactory.getCurrentSession().merge(
  72. detachedInstance);
  73. log.debug("merge successful");
  74. return result;
  75. } catch (RuntimeException re) {
  76. log.error("merge failed", re);
  77. throw re;
  78. }
  79. }
  80. public Class findById(int id) {
  81. log.debug("getting Class instance with id: " + id);
  82. try {
  83. Class instance = (Class) sessionFactory.getCurrentSession().get(
  84. "org.hibernate.test.Class", id);
  85. if (instance == null) {
  86. log.debug("get successful, no instance found");
  87. } else {
  88. log.debug("get successful, instance found");
  89. }
  90. return instance;
  91. } catch (RuntimeException re) {
  92. log.error("get failed", re);
  93. throw re;
  94. }
  95. }
  96. public List findByExample(Class instance) {
  97. log.debug("finding Class instance by example");
  98. try {
  99. List results = sessionFactory.getCurrentSession()
  100. .createCriteria("org.hibernate.test.Class")
  101. .add(Example.create(instance)).list();
  102. log.debug("find by example successful, result size: "
  103. + results.size());
  104. return results;
  105. } catch (RuntimeException re) {
  106. log.error("find by example failed", re);
  107. throw re;
  108. }
  109. }
  110. }</span>

到此,我们就由POJO类,生成了hbm.xml文件和DDL

思路二:由hbm.xml生成POJO类和DDL

...

思路三:由数据库表(或DDL)生成POJO类和hbm.xml

...

思路二三请见下一博客

HibernateTools实现pojo类 数据库schma mapping映射的相互转换的更多相关文章

  1. HibernateTools实现pojo类 数据库schma mapping映射的相互转换 二

    接着上一篇博客:HibernateTools实现pojo类 数据库schma mapping映射的相互转换 思路二:由数据库表,生成Mapping映射文件和POJO类. 尽管能够实现,但个人觉着先设计 ...

  2. Hibernate类中集合的映射

    1 pojo类集合属性的映射 在pojo类中定义集合属性. 1.1  List集合属性的映射 package org.guangsoft.pojo; import java.util.List; pu ...

  3. 缓存策略 半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernate这种完全自动化的框架我更喜欢mybatis

    springboot入门(三)-- springboot集成mybatis及mybatis generator工具使用 - FoolFox - CSDN博客 https://blog.csdn.net ...

  4. Hibernate - POJO 类和数据库的映射文件*.hbm.xml

    POJO 类和关系数据库之间的映射可以用一个XML文档来定义. 通过 POJO 类的数据库映射文件,Hibernate可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据库表列之间的对 ...

  5. 通过数据库中的表,使用 MyEclipse2017的反向生成工具-->hibernate反转引擎引擎(MyEclipse2017自带的插件) 来反转生成实体类和对应的映射文件

    通过数据库中的表,使用 MyEclipse2017的反向生成工具-->hibernate反转引擎引擎(MyEclipse2017自带的插件) 来反转生成实体类和对应的映射文件   文章目录 Ja ...

  6. java web(七): mybatis的动态sql和mybatis generator自动生成pojo类和映射文件

    前言: MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据 不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空格,还 ...

  7. Mybatis自动生成实体类、dao接口和mapping映射文件

    由于Mybatis是一种半自动的ORM框架,它的工作主要是配置mapping映射文件,为了减少手动书写映射文件,可以利用mybatis生成器,自动生成实体类.dao接口以及它的映射文件,然后直接拷贝到 ...

  8. Json映射为Map,避免定义过多pojo类

    我们在开发过程中经常会遇到解析Json字符串的情况,这时候采用开源工具可以快速将json字符串映射为pojo对象.而在某些业务场景中,往往为了获得json字符串中某个属性的值而不得不定义一个pojo类 ...

  9. pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等

    pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表 ...

随机推荐

  1. tomcat集群 (自带Cluster集群)

    不用借助其他任何工具,tomcat自身就可以实现session共享,实现集群.以下为大概步骤 1,如果是在同一台机器上,请保持多个tomcat端口(一个tomcat对应三个端口)不相同:如果是不同机器 ...

  2. asp.net 分布式缓存

    之前Velocity已被 集成到App Fabric(包含有WCF监控==)中.   网络Velocity使用大多是针对老版本:  老版本的下载地址:  http://www.microsoft.co ...

  3. AngularJs学习笔记--Guide教程系列文章索引

    在很久很久以前,一位前辈向我推荐AngularJs.但当时我没有好好学习,仅仅是讲文档浏览了一次.后来觉醒了……于是下定决心好好理解这系列的文档,并意译出来(英文水平不足……不能说是翻译,有些实在是看 ...

  4. 较复杂js的书写格式

    我们看较复杂的js程序最怕结构混乱,一个好的js书写结构,在很大程度上可以减缓阅读的障碍性. 我感觉一个良好的结构要有两点:一是要有一个统一的入口,这样就保证了程序的可阅读性:二是要能够灵活的设置参数 ...

  5. codeforces #235div2 D

    完全没看出是状态压缩DP, 果然没练习,之前一直再看,看来要把状压做几道了, 上代码吧:代码也是问道的 无语... #include<cstdio> #include<cstring ...

  6. 如何开发一个自己的 RubyGem?

    「如何测试你的 RubyGem?」的前导文章 什么是 RubyGem RubyGem 是 Ruby 语言的标准源码打包格式. 大家一直都在用gem这个命令,但是很少有人知道这个东西是怎么来的,这里我从 ...

  7. 整数划分 Integer Partition(一)

    话说今天百度面试,可能是由于我表现的不太好,面试官显得有点不耐烦,说话的语气也很具有嘲讽的意思,搞得我有点不爽.Whatever,面试中有问到整数划分问题,回答这个问题过程中被面试官搞的不胜其烦,最后 ...

  8. jvm 之 国际酒店 8 月 19 一次full GC 导致的事故

    事故经过: 1  15:18收到短信报警:国际酒店调用OMS queryGorderOrderList方法失败:成单接口调用OMS获取token失败. 2  查看checkList发现15:18开始发 ...

  9. DFS/BFS+思维 HDOJ 5325 Crazy Bobo

    题目传送门 /* 题意:给一个树,节点上有权值,问最多能找出多少个点满足在树上是连通的并且按照权值排序后相邻的点 在树上的路径权值都小于这两个点 DFS/BFS+思维:按照权值的大小,从小的到大的连有 ...

  10. Linux下Boost交叉编译

    http://davidlwq.iteye.com/blog/1580752 运行环境:ubuntu 12.04, boost 1.50.0 由于要把boost移植到arm板上去,所以折腾了一下,后来 ...