1 注解简介:
a) 存在意义: 定义后用于被编译器读取,并服务于使用注解的类上
b) 定义和使用步骤:
b.1) 定义注解
b.2) 在目标类中声明引用注解
b.3) 定义解释类解释注解和处理注解
2 注解详细概念看下图:
3 注解简单定义和使用:
1 定义注解 @Target(value={ElementType.METHOD,ElementType.TYPE}) // 指定作用范围为 方法和类上 @Retention(RetentionPolicy.RUNTIME)// 指定有效范围(soruce + class 级别都有效并支持反射) public @interface SxtAnnotation01 { // 定义属性时,基本需要有默认值,否则使用注解时候会报错 提示让有初始值 初始值一般为空串或者0 如果是-1则表示不存在 String studentName() default ""; int age() default 0; int id() default -1; //String indexOf("abc") -1 String[] schools() default {"清华大学","北京上学堂"}; } 2 使用注解 @SxtAnnotation01 // 在类上使用注解 public class Demo02 { @SxtAnnotation01(age=19,studentName="老高",id=1001, schools={"北京大学","北京航空航天大学"}) public void test(){ // 在方法上使用注解 并赋值 } }
4 注解在 orm上使用简单写法:
1 定义表注解 @Target(value={ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface TableAnno { String value(); } 2 定义属性注解 @Target(value={ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface FieldAnno { String columnname(); String type(); int length(); } 3 实体bean上引用注解 @TableAnno(value = "student_table") public class Student { @FieldAnno(columnname = "id", length = 10, type = "int") private int id; @FieldAnno(columnname = "name", length = 10, type = "varchar") private String name; @FieldAnno(columnname = "age", length = 3, type = "int") private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 4 定义解析处理注解类 public class AnalyticalAnnocation { /** * 解析自定义注解 */ public static void main(String[] args) { try { Class<Student> clazz = (Class<Student>) Class.forName("zm.annocation.Student"); // 得到类注解TableAnno的属性值 TableAnno tableAnno = clazz.getAnnotation(TableAnno.class); System.out.println(tableAnno.value()); // student_table // 得到属性注解 Field field = clazz.getDeclaredField("id"); FieldAnno fieldAnno = field.getAnnotation(FieldAnno.class); int idLen = fieldAnno.length(); String idType = fieldAnno.type(); String idName = fieldAnno.columnname(); System.out.println(idName + "--" + idType + "--" + idLen );//id--int--10 Field field1 = clazz.getDeclaredField("name"); FieldAnno fieldAnno1 = field1.getAnnotation(FieldAnno.class); int nameLen = fieldAnno1.length(); String nameType = fieldAnno1.type(); String nameName = fieldAnno1.columnname(); System.out.println(nameName + "--" + nameType + "--" + nameLen );//name--varchar--10 Field field2 = clazz.getDeclaredField("age"); FieldAnno fieldAnno2 = field2.getAnnotation(FieldAnno.class); int ageLen = fieldAnno2.length(); String ageType = fieldAnno2.type(); String ageName = fieldAnno2.columnname(); System.out.println(ageName + "--" + ageType + "--" + ageLen );//age--int--3 // 如上操作得到实体Student对应表明,表字段名称,类型,长度,下面就可以通过拼接来实现创建.查询,等SQL操作 // ........ 略 } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
HSWeb-Easy-ORM 是一个开源的简单对象关系映射(ORM)工具,设计初衷是为了简化动态表单的处理。ORM 工具的核心作用在于桥接数据库与编程语言,允许开发者通过面向对象的方式操作数据库,避免了直接编写 SQL 语句的...
ORM映射,全称为Object-Relational Mapping,是对象关系映射,是现代Web应用程序中一个重要的技术。它提供了一种方式,将数据库中的表结构映射为编程语言中的对象,使得开发者可以使用面向对象的方式来操作数据库,...
总之,Hibernate的ORM映射关系配置是Java Web开发中的核心技能之一,通过合理的配置,我们可以轻松地处理复杂的数据库关系,提高代码的可读性和可维护性。实践中需要结合业务需求灵活运用,以达到最佳性能和设计效果...
HBase-ORM框架的主要特点是使用Java的反射和注解技术来完成数据的映射关系,能够自动建立底层数据库表与上层数据库对象之间的映射关系,并且能够根据不同的数据类型来建立索引,实现了文本的模糊查询、数值的区间...
Java-JDBC【之】实现ORM,结果集映射实体类(ResultSet、注解、反射) 1.ORM实现思路 2.@Table、@Column、标识实体类 2.1.创建注解 @Table、@Column 2.2.标识实体类 2.3.数据库表 3.结果集解析,注解加反射填充实体...
在本文中,我们将深入探讨如何在Laravel框架中结合使用Sl-Entrust、Doctrine ORM以及Zizco Entrust,以实现角色权限管理。Laravel是一个流行的PHP框架,它提供了丰富的功能和工具,使得Web应用开发更为高效。而...
ORM是一种编程技术,它将数据库表与类对象映射,使得开发者可以使用面向对象的代码来操作数据库,而无需直接编写SQL语句。这降低了数据库特定语法的学习曲线,并提高了代码的可移植性。 Doctrine ORM提供了几种不同...
1. **简单文档映射**:允许开发人员通过定义Java实体类来映射MongoDB的文档,实体类的属性对应文档的字段。 2. **内嵌文档映射**:支持内嵌文档的映射,即在Java对象中可以包含其他对象,对应MongoDB中的嵌入式文档...
标题 "ibatis半自动化ORM映射" 涉及的核心技术是iBatis,这是一个流行的Java数据访问框架,用于实现对象关系映射(ORM)。ORM的主要目标是将数据库操作与业务逻辑解耦,使得开发人员可以更专注于业务代码,而无需...
ORM(Object-Relational Mapping,对象关系映射)是一种编程技术,它允许程序员在使用面向对象编程语言时,处理关系数据库的数据,而无需关注底层的SQL语法和数据存储细节。ORM工具是连接数据库和应用程序之间的桥梁...
总的来说,ORM映射的实现涉及到Java对象与数据库表之间的映射规则定义、数据库操作的API调用、事务管理和性能优化等多个方面。通过分析和运行提供的源码,我们可以深入理解ORM的工作原理,从而更好地应用到实际项目...
不提供多表关系与实体类进行映射的功能,sqlit-tools并不是一个orm框架. 不提供修改表结构功能,如果想要实现,只能自行书写ddl语句. 不提供将查询结果直接转换成实体类的功能. 代码简述: 包说明: annotation:注解包...
这个压缩包"Android高级应用源码-AndroidInject增加sqlite3数据库映射注解(ORM).rar"提供了一个示例,展示了如何在Android项目中使用SQLite3数据库,并结合ORM(对象关系映射)技术,通过注解的方式简化数据库操作。...
本项目“AndroidInject增加sqlite3数据库映射注解(ORM)”是针对Android应用的一个源码示例,旨在教授如何通过对象关系映射(ORM)技术简化与SQLite3数据库的交互,提升开发效率,特别是在毕业设计或论文撰写过程中...
而"sqlite3数据库映射注解"则是指使用注解来定义数据库表和表中的字段,例如使用`@Table`定义表,`@Column`定义列,`@PrimaryKey`定义主键等。这种方式使得数据库模型与Java对象直接关联,无需编写SQL代码。 ORM...
这个压缩包"Android高级应用源码-AndroidInject增加sqlite3数据库映射注解(ORM).zip"提供了一个示例,展示了如何在Android项目中使用SQLite3数据库,并通过ORM(对象关系映射)技术来简化数据库操作。ORM允许开发者...
它通过XML或注解方式定义映射规则,将Java类与数据库表关联,使得开发者可以操作Java对象,而无需直接编写SQL语句,大大提高了开发效率。 在压缩包中,"hibernate-orm-master"文件夹很可能是包含了整个Hibernate ...
在ORM框架中,我们可以使用注解来标记那些需要映射到数据库表的类、字段,以及定义特定的数据库操作。例如,`@Table`表示对应的类映射到数据库的一个表,`@Column`表示字段映射到表的列。 3. **自定义ORM**: ...
这篇博文“利用java反射、注解及泛型模拟ORM实现”旨在探讨如何结合这三种技术来实现对象关系映射(ORM),这是一种将数据库表与Java对象之间进行绑定的技术,简化了数据操作。 首先,我们来理解一下这三个概念: ...
通过注解或XML配置,我们可以定义对象和数据库表之间的映射关系,然后通过Hibernate API进行CRUD(创建、读取、更新、删除)操作。 MyBatis则是一种轻量级的ORM框架,它允许开发者自定义SQL语句,更加灵活。在...