/slorm

This is a wonderful java ORM framework.

Primary LanguageJava

#SLORM This is a very amazing java ORM framework.

##介绍

你是否像我一样,对繁琐的数据库CURD操作感觉厌倦?

本文将向你呈现一个全新的ORM框架,它可以帮助你从无穷无尽的CURD中解脱出来。

在接下来的讲解之前,我们先通过如下几行代码,对Slorm的**“极简”**了解一二。

1、新建Java对象,并初始化:

User user = new User();
user.setName("hello world");

2、将该对象存储入数据库中:

user.$save();   // 返回数据库自增主键 1

3、更新该对象,并提交修改至数据库:

user.setName("new user name");
user.$update();

4、从数据库中查询/加载该对象:

User user = new User();
user.setId(1);
user.$load();

5、从数据库中删除该对象:

user.$delete();

##快速入门

接下来以maven为例,讲解如何使用slorm。

备注:由于maven**库审核条件比较苛刻,Slorm目前在OSC的第三方库中,使用前需要添加OSC的第三方资源库。

1、添加maven依赖:

<dependency>
    <groupId>slorm</groupId>
    <artifactId>slorm</artifactId>
    <version>1.1.1</version>
</dependency>

2、配置数据源:

将数据源配置在Spring容器中即可,Slorm会在运行时主动到Spring中搜索数据源,但这只限于web应用。

普通J2SE程序使用Slorm的话,需要在classpath中添加配置文件slorm.properties

dataSource.dataSourceName.driverClass=org.gjt.mm.mysql.Driver
dataSource.dataSourceName.user=blah
dataSource.dataSourceName.password=blah
dataSource.dataSourceName.url=blah

Slorm也支持多数据源配置,只要将dataSourceName修改为其他名字即可。

3、编写POJO:

Slorm使用继承方式来增强POJO功能,因此你的POJO需要继承SlormDao。

public class User extends SlormDao<User> {

	private Integer id;
	private String name;
    /*  getter and setter  */

}

4、使用该POJO进行CURD操作:

此时,User类就可以非常随意地进行CURD操作了。

User user = new User();
user.setName("hello world");
user.$save();   // 返回数据库自增主键 1
user.setName("new user name");
user.$update();
user = new User();
user.setId(1);
user.$load();
user.$delete();

##高级特性

Slorm支持注解方式自定义POJO与数据库的映射关系,例:

@Table(tableName = "user", dataSource = "test")
public class User extends SlormDao<User> {

	@Column(isID = true)
	private Integer id;

	private String name;

	@Column(columnName = "pass")
	private String password;

	@UnColumn
	private String dont_mapping;

	@Quote("target.friend_id = this.id")
	private User friend;

}

注解说明:

  • Table:手动配置POJO对应的表名、数据源名。
  • Column:配置字段对应的列名、数据类型、是否为主键。
  • UnColumn:强制Slorm忽略该字段。
  • Quote:实现POJO间的关联映射,参数为映射描述。

Slorm接口一览(为区别于普通方法,DML方法均以美元符号*$*为始):

  • $save / $saveAll:保存数据。
  • $delete / $deleteAll:删除数据,可以按主键删除,也可以按example删除。
  • $update / $updateAll:更新数据,可以按主键更新,也可以按example更新。
  • $load:加载数据,select的特殊实现,需要指定主键。
  • $get:按example查询单行记录,可指定被查询列名。
  • $list:按example查询多行记录,可指定被查询列名。
  • $page:按example分页查询,可指定被查询列名。
  • $selectBySQL:SQL片段查询,只需要编写where子句,支持SQL片段配置、引用等。
  • $nativeSQL:原生SQL查询,支持SQL配置、引用。
  • $createRestriction:创建函数式查询工具。
  • $getConnection:获取底层数据库连接。
  • $releaseConnection:释放底层数据库连接。

Slorm支持SQL片段配置、原生SQL查询、懒加载、关联映射等增强特性。

Slorm本身并没有封装事务操作,但它可以利用Spring的事务管理功能实现事务控制。

Slorm支持编程式复杂批量操作,如批量删除、批量修改、分页查询、指定列名查询等。

除此之外,Slorm也暴露出了connection接口,应用层可以自由获取底层数据库连接进行操作。

开发中:自动创建数据表、自动添加数据列功能,元数据自动修复功能。

备注

Slorm于2012年8月完成,且已在多个项目中长期使用。虽然不能保证非常成熟,但应付中小型应用绰绰有余。:D

Slorm的目的是:

  • 在易用的前提上,尽可能的减少学习成本。
  • 在极简的前提上,提供不逊于Hibernate和IBatis的功能。