Skip to content
This is a wonderful java ORM framework.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
README.md
TODO
pom.xml

README.md

#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的功能。
You can’t perform that action at this time.