基于注解的对象关系映射的实现(一):使用示例
来源:互联网 发布:魔兽副本数据库 编辑:程序博客网 时间:2024/04/30 08:44
一个简单的、基于注解的对象关系映射的实现,分享给那些对数据对象关系映射有兴趣的程序员,共同学习(转载请注明出处)。
目前实现的功能有:
1、自动扫描指定包,查找使用了注解声明的对象,自动生成对应映射器。
2、自动完成数据库的CRUD操作。
3、使用工作单元来完成事务管理。
局限性(如果各位有兴趣,可以修改这部分):
1、需要有主键。
2、需要对象有默认无参构造器。
那么先来看一段使用示例,如何使用映射器来简化数据库访问:
@Table(name="userpublicinfo")public class UserPublicInfo extends DomainObject{ @PrimaryKeyColumn(columnName="username") private String username; @OneToOneColumn(columnName="firstname") private String firstname; @OneToOneColumn(columnName="lastname") private String lastname; @OneToOneColumn(columnName="lang") private String lang; @OneToOneColumn(columnName="profession") private String profession; @OneToOneColumn(columnName="country") private String country; @OneToOneColumn(columnName="sex") private String sex; @OneToOneColumn(columnName="birthday") private Date birthday; @OneToOneColumn(columnName="profile") private String profile; public UserPublicInfo(){} public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; markDirty(); } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; markDirty(); } public String getLang() { return lang; } public void setLang(String lang) { this.lang = lang; markDirty(); } public String getProfession() { return profession; } public void setProfession(String profession) { this.profession = profession; markDirty(); } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; markDirty(); } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; markDirty(); } public String getProfile() { return profile; } public void setProfile(String profile) { this.profile = profile; markDirty(); } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; markDirty(); } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; markDirty(); }}
public class App { public static void main(String[] args) { DBConnectionFactory.initDataBaseContext(); UserPublicInfo info = (UserPublicInfo) MapperRegister.getMapper(UserPublicInfo.class) .findObjectByPrimaryKey("admin"); System.out.println("Name: " + info.getFirstname() + info.getLastname()); DBConnectionFactory.closeAllConnection(); }}
程序运行结果(具体结果):
Name: admin
可以看到,使用映射器只需要两步:
1、使用注解来声明对象中field与数据库列名的映射关系。
2、获取映射器然后通过主键查询。从数据库中查询并生成一个UserPublicInfo只需要一行代码,不需要写任何的sql语句。(请忽略DBConnectionFactory的初始化跟closeAllConnection。- -!,这个是上一篇文章里面的数据库连接池代码,然后我为了简化数据库表的创建及获取连接,所以拿来用了。当然在具体使用过程中,可以替换为你想要获取连接的方式,或者直接DriverManager.getConnection()都是可以的)
后续会完成几篇关于该映射器设计思路的文章,敬请关注!
整个示例工程代码链接:https://github.com/hu-xuemin/mapper.git
0 0
- 基于注解的对象关系映射的实现(一):使用示例
- Hibernate 基于注解的方式 实现的关系映射案例(一对一关系,一对多关系,多对多关系)
- hibernate对象关系映射(基于注解)
- 基于注解的Spring MVC的URL与Controller映射关系提取的实现分析
- 基于注解的Spring MVC的URL与Controller映射关系提取的实现分析
- 基于注解的Spring MVC的URL与Controller映射关系提取的实现分析
- Hibernate基于注解的双向one-to-many映射关系的实现
- Hibernate中,One2Many和Many2One的双向映射关系的基于注解Annotation实现方式
- Hibernate基于注解的双向one-to-many映射关系的实现
- Java注解提供的一些基本对象/关系映射功能(一)
- 使用Hibernate进行对象的关系映射
- 使用Hibernate进行对象的关系映射
- 基于注解和反射的Java ORM框架(1)-通过注解描述映射关系
- IOS对象关系映射(ORM)之coreData框架的学习——(一)基本使用
- 基于 自定义注解 和 aop 实现使用memcache 对数据库的缓存 示例
- Java 自定义注解实现ORM对象关系映射
- Hibernate中使用JPA(注解)配置对象关系映射
- hibernate 对象的映射关系
- [Pascal][简单题]兔子繁殖问题
- javaScript实现复制功能
- php学习笔记-echo和print语句区别
- 【并发编程】ReentrantLock使用介绍
- 计算结构体的字节数
- 基于注解的对象关系映射的实现(一):使用示例
- Eclipse创建java web工程
- Thymeleaf设置任意属性
- HBase学习笔记——系统架构
- 验证同步函数(静态与非静态)的锁是否是Object
- 当出现no changes added to commit时如何正确使用git提交命令
- SQL SERVER 转换大小写
- Python sys模块的常用方法
- 1019. General Palindromic Number (20)