实例介绍
【实例简介】persist4j,类AJQL语法糖的ORM工具集
建议你将 persist4j 与 Spring 配合使用,可以大大简化编码。
使用 persist4j 首先需要了解两个基础对象 Record 和 Query。Record 是一个 Map 实现,他承担了 DAO 职责,而 Query 是查询入口,是日常编码中使用最为频繁的类。
Record 对象
Record 包含了诸多 setter 和 getter 方法,在实现动态化 DAO 职责的同时,还具备对不同数据(字段)类型进行校验的能力。以下是一个基本的使用示例。
// 获取数据管理对象 PersistManagerFactory PMF = ... PersistManager PM = PMF.createPersistManager(); Record record = new StandardRecord() record.setString("FieldName", "FieldValue"); PM.create(record);
通常你可以将上述代码封装为一个工具方法进行使用
Query 对象
Query 的使用主要是对 persist4j 独有的 AJQL (Auto Join Query Language)语句进行理解。AJQL 是 Like-SQL 语法,因此学习和理解起来并不困难。
// 获取数据管理对象 PersistManagerFactory PMF = ... PersistManager PM = PMF.createPersistManager(); String ajql = "select Field1, ReferenceField1.Field2 from Table1 where Field2 = ?"; Record found = PM.createQuery(ajql).setParameter(1, "SomeValue").unique();
通常你可以将上述代码封装为一个工具方法进行使用
请注意上例中 select 子句中的 ReferenceField1.Field2 字段,ReferenceField1 是一个引用型字段,因此可以使用 . 进行(自动)关联查询(其中 Field2 是关联表中的字段)。如果 Field2 也是一个引用字段,那么可以继续进行关联查询。
可以看出,通过 AJQL 可以大大简化我们日常查询 SQL 中的表关联操作,同时这也正是 AJQL 名称的由来。
Query 自动装箱
经由 Query 查询出来的数据并不一定是数据库底层的数据类型,例如 ID 主键虽然使用 varchar 存储,但是查询后会自动转换为 ID 对象(其他字段同理)。这是因为我们会根据元数据的字段定义将其自动装箱,而无需你手动二次处理,同时也保证了数据的严谨性。
【实例截图】
【核心代码】
.
├── persist4j-master
│ ├── LICENSE
│ ├── README.md
│ ├── docs
│ │ ├── allclasses-frame.html
│ │ ├── allclasses-noframe.html
│ │ ├── cn
│ │ │ └── devezhao
│ │ │ └── persist4j
│ │ │ ├── BaseTest.html
│ │ │ ├── DataAccessException.html
│ │ │ ├── Entity.html
│ │ │ ├── Field.html
│ │ │ ├── Filter.html
│ │ │ ├── PersistException.html
│ │ │ ├── PersistManager.html
│ │ │ ├── PersistManagerFactory.html
│ │ │ ├── Query.html
│ │ │ ├── Record.html
│ │ │ ├── RecordTest.html
│ │ │ ├── dialect
│ │ │ │ ├── Dialect.html
│ │ │ │ ├── DialectException.html
│ │ │ │ ├── Editor.html
│ │ │ │ ├── FieldType.html
│ │ │ │ ├── MySQL5Dialect.html
│ │ │ │ ├── OracleDialect.html
│ │ │ │ ├── Type.html
│ │ │ │ ├── editor
│ │ │ │ │ ├── AbstractFieldEditor.html
│ │ │ │ │ ├── AnyReferenceEditor.html
│ │ │ │ │ ├── BinaryEditor.html
│ │ │ │ │ ├── BoolEditor.html
│ │ │ │ │ ├── CharEditor.html
│ │ │ │ │ ├── DateEditor.html
│ │ │ │ │ ├── DecimalEditor.html
│ │ │ │ │ ├── DoubleEditor.html
│ │ │ │ │ ├── IntEditor.html
│ │ │ │ │ ├── LongEditor.html
│ │ │ │ │ ├── NTextEditor.html
│ │ │ │ │ ├── PrimaryEditor.html
│ │ │ │ │ ├── ReferenceEditor.html
│ │ │ │ │ ├── ReferenceListEditor.html
│ │ │ │ │ ├── SmallIntEditor.html
│ │ │ │ │ ├── StringEditor.html
│ │ │ │ │ ├── TextEditor.html
│ │ │ │ │ ├── TimestampEditor.html
│ │ │ │ │ ├── package-frame.html
│ │ │ │ │ ├── package-summary.html
│ │ │ │ │ └── package-tree.html
│ │ │ │ ├── function
│ │ │ │ │ ├── GetDateFunction.html
│ │ │ │ │ ├── SqlFunction.html
│ │ │ │ │ ├── package-frame.html
│ │ │ │ │ ├── package-summary.html
│ │ │ │ │ └── package-tree.html
│ │ │ │ ├── h2
│ │ │ │ │ ├── H2Dialect.html
│ │ │ │ │ ├── package-frame.html
│ │ │ │ │ ├── package-summary.html
│ │ │ │ │ └── package-tree.html
│ │ │ │ ├── package-frame.html
│ │ │ │ ├── package-summary.html
│ │ │ │ └── package-tree.html
│ │ │ ├── engine
│ │ │ │ ├── ID.html
│ │ │ │ ├── IDGenerator.html
│ │ │ │ ├── JdbcSupport.html
│ │ │ │ ├── NullValue.html
│ │ │ │ ├── PersistManagerFactoryImpl.html
│ │ │ │ ├── PersistManagerImpl.html
│ │ │ │ ├── PersistManagerTest.html
│ │ │ │ ├── SqlExecutorContext.html
│ │ │ │ ├── StandardRecord.html
│ │ │ │ ├── StatementCallback.html
│ │ │ │ ├── WeakIDGenerator.html
│ │ │ │ ├── package-frame.html
│ │ │ │ ├── package-summary.html
│ │ │ │ └── package-tree.html
│ │ │ ├── exception
│ │ │ │ ├── JdbcException.html
│ │ │ │ ├── SqlExceptionConverter.html
│ │ │ │ ├── SqlWarningException.html
│ │ │ │ ├── jdbc
│ │ │ │ │ ├── ConstraintViolationException.html
│ │ │ │ │ ├── GenericJdbcException.html
│ │ │ │ │ ├── LockAcquisitionException.html
│ │ │ │ │ ├── SqlSyntaxException.html
│ │ │ │ │ ├── package-frame.html
│ │ │ │ │ ├── package-summary.html
│ │ │ │ │ └── package-tree.html
│ │ │ │ ├── package-frame.html
│ │ │ │ ├── package-summary.html
│ │ │ │ └── package-tree.html
│ │ │ ├── metadata
│ │ │ │ ├── BaseMeta.html
│ │ │ │ ├── BaseMetaObject.html
│ │ │ │ ├── CascadeModel.html
│ │ │ │ ├── MetadataException.html
│ │ │ │ ├── MetadataFactory.html
│ │ │ │ ├── MetadataTest.html
│ │ │ │ ├── MissingMetaExcetion.html
│ │ │ │ ├── impl
│ │ │ │ │ ├── AnyEntity.html
│ │ │ │ │ ├── ConfigurationMetadataFactory.html
│ │ │ │ │ ├── EntityImpl.html
│ │ │ │ │ ├── FieldImpl.html
│ │ │ │ │ ├── package-frame.html
│ │ │ │ │ ├── package-summary.html
│ │ │ │ │ └── package-tree.html
│ │ │ │ ├── package-frame.html
│ │ │ │ ├── package-summary.html
│ │ │ │ └── package-tree.html
│ │ │ ├── package-frame.html
│ │ │ ├── package-summary.html
│ │ │ ├── package-tree.html
│ │ │ ├── query
│ │ │ │ ├── AjqlQuery.html
│ │ │ │ ├── AjqlResultImpl.html
│ │ │ │ ├── BaseQuery.html
│ │ │ │ ├── IQuery.html
│ │ │ │ ├── NativeQuery.html
│ │ │ │ ├── NativeQueryImpl.html
│ │ │ │ ├── QueryException.html
│ │ │ │ ├── QueryTest.html
│ │ │ │ ├── QueryedRecord.html
│ │ │ │ ├── Result.html
│ │ │ │ ├── SlowLogger.html
│ │ │ │ ├── compiler
│ │ │ │ │ ├── CompileException.html
│ │ │ │ │ ├── Compiler.html
│ │ │ │ │ ├── JoinField.html
│ │ │ │ │ ├── JoinTree.JoinNode.html
│ │ │ │ │ ├── JoinTree.html
│ │ │ │ │ ├── NestedSelectContext.html
│ │ │ │ │ ├── ParameterItem.html
│ │ │ │ │ ├── QueryCompiler.html
│ │ │ │ │ ├── QueryCompilerTest.html
│ │ │ │ │ ├── SelectItem.html
│ │ │ │ │ ├── SelectItemType.html
│ │ │ │ │ ├── antlr
│ │ │ │ │ │ ├── AjQLLexer.html
│ │ │ │ │ │ ├── AjQLParser.html
│ │ │ │ │ │ ├── AjQLParserTokenTypes.html
│ │ │ │ │ │ ├── ParserException.html
│ │ │ │ │ │ ├── ParserHelper.html
│ │ │ │ │ │ ├── ThrowerAjQLParser.html
│ │ │ │ │ │ ├── package-frame.html
│ │ │ │ │ │ ├── package-summary.html
│ │ │ │ │ │ └── package-tree.html
│ │ │ │ │ ├── package-frame.html
│ │ │ │ │ ├── package-summary.html
│ │ │ │ │ └── package-tree.html
│ │ │ │ ├── package-frame.html
│ │ │ │ ├── package-summary.html
│ │ │ │ └── package-tree.html
│ │ │ ├── record
│ │ │ │ ├── FieldValueException.html
│ │ │ │ ├── JsonRecordCreator.html
│ │ │ │ ├── RecordCreator.html
│ │ │ │ ├── RecordVisitor.html
│ │ │ │ ├── XmlBean.html
│ │ │ │ ├── XmlRecordCreator.html
│ │ │ │ ├── package-frame.html
│ │ │ │ ├── package-summary.html
│ │ │ │ └── package-tree.html
│ │ │ └── util
│ │ │ ├── CaseInsensitiveMap.html
│ │ │ ├── CaseInsensitiveMapTest.html
│ │ │ ├── SqlHelper.html
│ │ │ ├── StringHelper.html
│ │ │ ├── XmlHelper.DTDEntityResolver.html
│ │ │ ├── XmlHelper.ErrorLogger.html
│ │ │ ├── XmlHelper.html
│ │ │ ├── package-frame.html
│ │ │ ├── package-summary.html
│ │ │ ├── package-tree.html
│ │ │ └── support
│ │ │ ├── QueryHelper.html
│ │ │ ├── SchemaExport.html
│ │ │ ├── SchemaExportTest.html
│ │ │ ├── SecurityPreferencesConfigurer.html
│ │ │ ├── Table.html
│ │ │ ├── package-frame.html
│ │ │ ├── package-summary.html
│ │ │ └── package-tree.html
│ │ ├── constant-values.html
│ │ ├── deprecated-list.html
│ │ ├── help-doc.html
│ │ ├── index-files
│ │ │ ├── index-1.html
│ │ │ ├── index-10.html
│ │ │ ├── index-11.html
│ │ │ ├── index-12.html
│ │ │ ├── index-13.html
│ │ │ ├── index-14.html
│ │ │ ├── index-15.html
│ │ │ ├── index-16.html
│ │ │ ├── index-17.html
│ │ │ ├── index-18.html
│ │ │ ├── index-19.html
│ │ │ ├── index-2.html
│ │ │ ├── index-20.html
│ │ │ ├── index-21.html
│ │ │ ├── index-22.html
│ │ │ ├── index-23.html
│ │ │ ├── index-24.html
│ │ │ ├── index-25.html
│ │ │ ├── index-26.html
│ │ │ ├── index-3.html
│ │ │ ├── index-4.html
│ │ │ ├── index-5.html
│ │ │ ├── index-6.html
│ │ │ ├── index-7.html
│ │ │ ├── index-8.html
│ │ │ └── index-9.html
│ │ ├── index.html
│ │ ├── overview-frame.html
│ │ ├── overview-summary.html
│ │ ├── overview-tree.html
│ │ ├── package-list
│ │ ├── script.js
│ │ ├── serialized-form.html
│ │ └── stylesheet.css
│ ├── lib
│ │ └── ojdbc8.jar
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── cn
│ │ │ └── devezhao
│ │ │ └── persist4j
│ │ │ ├── DataAccessException.java
│ │ │ ├── Entity.java
│ │ │ ├── Field.java
│ │ │ ├── Filter.java
│ │ │ ├── PersistException.java
│ │ │ ├── PersistManager.java
│ │ │ ├── PersistManagerFactory.java
│ │ │ ├── Query.java
│ │ │ ├── Record.java
│ │ │ ├── dialect
│ │ │ │ ├── Dialect.java
│ │ │ │ ├── DialectException.java
│ │ │ │ ├── Editor.java
│ │ │ │ ├── FieldType.java
│ │ │ │ ├── MySQL5Dialect.java
│ │ │ │ ├── OracleDialect.java
│ │ │ │ ├── Type.java
│ │ │ │ ├── editor
│ │ │ │ │ ├── AbstractFieldEditor.java
│ │ │ │ │ ├── AnyReferenceEditor.java
│ │ │ │ │ ├── BinaryEditor.java
│ │ │ │ │ ├── BoolEditor.java
│ │ │ │ │ ├── CharEditor.java
│ │ │ │ │ ├── DateEditor.java
│ │ │ │ │ ├── DecimalEditor.java
│ │ │ │ │ ├── DoubleEditor.java
│ │ │ │ │ ├── IntEditor.java
│ │ │ │ │ ├── LongEditor.java
│ │ │ │ │ ├── NTextEditor.java
│ │ │ │ │ ├── PrimaryEditor.java
│ │ │ │ │ ├── ReferenceEditor.java
│ │ │ │ │ ├── ReferenceListEditor.java
│ │ │ │ │ ├── SmallIntEditor.java
│ │ │ │ │ ├── StringEditor.java
│ │ │ │ │ ├── TextEditor.java
│ │ │ │ │ ├── TimeEditor.java
│ │ │ │ │ └── TimestampEditor.java
│ │ │ │ ├── function
│ │ │ │ │ ├── GetDateFunction.java
│ │ │ │ │ └── SqlFunction.java
│ │ │ │ └── h2
│ │ │ │ └── H2Dialect.java
│ │ │ ├── engine
│ │ │ │ ├── ID.java
│ │ │ │ ├── IDGenerator.java
│ │ │ │ ├── JdbcSupport.java
│ │ │ │ ├── NullValue.java
│ │ │ │ ├── PersistManagerFactoryImpl.java
│ │ │ │ ├── PersistManagerImpl.java
│ │ │ │ ├── SqlExecutorContext.java
│ │ │ │ ├── StandardRecord.java
│ │ │ │ ├── StatementCallback.java
│ │ │ │ └── WeakIDGenerator.java
│ │ │ ├── exception
│ │ │ │ ├── JdbcException.java
│ │ │ │ ├── SqlExceptionConverter.java
│ │ │ │ ├── SqlWarningException.java
│ │ │ │ └── jdbc
│ │ │ │ ├── ConstraintViolationException.java
│ │ │ │ ├── GenericJdbcException.java
│ │ │ │ ├── LockAcquisitionException.java
│ │ │ │ └── SqlSyntaxException.java
│ │ │ ├── metadata
│ │ │ │ ├── BaseMeta.java
│ │ │ │ ├── BaseMetaObject.java
│ │ │ │ ├── CascadeModel.java
│ │ │ │ ├── MetadataException.java
│ │ │ │ ├── MetadataFactory.java
│ │ │ │ ├── MissingMetaExcetion.java
│ │ │ │ └── impl
│ │ │ │ ├── AnyEntity.java
│ │ │ │ ├── ConfigurationMetadataFactory.java
│ │ │ │ ├── EntityImpl.java
│ │ │ │ └── FieldImpl.java
│ │ │ ├── query
│ │ │ │ ├── AjqlQuery.java
│ │ │ │ ├── AjqlResultImpl.java
│ │ │ │ ├── BaseQuery.java
│ │ │ │ ├── IQuery.java
│ │ │ │ ├── NativeQuery.java
│ │ │ │ ├── NativeQueryImpl.java
│ │ │ │ ├── QueryException.java
│ │ │ │ ├── QueryedRecord.java
│ │ │ │ ├── Result.java
│ │ │ │ ├── SlowLogger.java
│ │ │ │ └── compiler
│ │ │ │ ├── CompileException.java
│ │ │ │ ├── JoinField.java
│ │ │ │ ├── JoinTree.java
│ │ │ │ ├── NestedSelectContext.java
│ │ │ │ ├── ParameterItem.java
│ │ │ │ ├── QueryCompiler.java
│ │ │ │ ├── SelectItem.java
│ │ │ │ ├── SelectItemType.java
│ │ │ │ ├── antlr
│ │ │ │ │ ├── AjQLLexer.java
│ │ │ │ │ ├── AjQLParser.java
│ │ │ │ │ ├── AjQLParserTokenTypes.java
│ │ │ │ │ ├── ParserException.java
│ │ │ │ │ ├── ParserHelper.java
│ │ │ │ │ ├── ThrowerAjQLParser.java
│ │ │ │ │ └── ajql.g
│ │ │ │ └── antlr4
│ │ │ │ └── ajql.g4
│ │ │ ├── record
│ │ │ │ ├── FieldValueException.java
│ │ │ │ ├── JsonRecordCreator.java
│ │ │ │ ├── RecordCreator.java
│ │ │ │ ├── RecordVisitor.java
│ │ │ │ ├── XmlBean.java
│ │ │ │ └── XmlRecordCreator.java
│ │ │ └── util
│ │ │ ├── CaseInsensitiveMap.java
│ │ │ ├── SqlHelper.java
│ │ │ ├── StringHelper.java
│ │ │ ├── XmlHelper.java
│ │ │ └── support
│ │ │ ├── QueryHelper.java
│ │ │ ├── SchemaExport.java
│ │ │ ├── SecurityPreferencesConfigurer.java
│ │ │ └── Table.java
│ │ └── resources
│ │ └── metadata.dtd
│ └── test
│ ├── java
│ │ └── cn
│ │ └── devezhao
│ │ └── persist4j
│ │ ├── BaseTest.java
│ │ ├── RecordTest.java
│ │ ├── engine
│ │ │ └── PersistManagerTest.java
│ │ ├── metadata
│ │ │ └── MetadataTest.java
│ │ ├── query
│ │ │ ├── QueryTest.java
│ │ │ └── compiler
│ │ │ ├── Compiler.java
│ │ │ └── QueryCompilerTest.java
│ │ └── util
│ │ ├── CaseInsensitiveMapTest.java
│ │ └── support
│ │ └── SchemaExportTest.java
│ └── resources
│ └── metadata-test.xml
└── persist4j,类AJQL语法糖的ORM工具集_persist4j-master.zip
57 directories, 322 files
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论