norm

a small java orm library.

License

License

Categories

Categories

ORM Data
GroupId

GroupId

io.github.xcr1234
ArtifactId

ArtifactId

norm
Last Version

Last Version

2.4
Release Date

Release Date

Type

Type

jar
Description

Description

norm
a small java orm library.
Project URL

Project URL

https://github.com/xcr1234/norm
Source Code Management

Source Code Management

https://github.com/xcr1234/norm

Download norm

How to add to project

<!-- https://jarcasting.com/artifacts/io.github.xcr1234/norm/ -->
<dependency>
    <groupId>io.github.xcr1234</groupId>
    <artifactId>norm</artifactId>
    <version>2.4</version>
</dependency>
// https://jarcasting.com/artifacts/io.github.xcr1234/norm/
implementation 'io.github.xcr1234:norm:2.4'
// https://jarcasting.com/artifacts/io.github.xcr1234/norm/
implementation ("io.github.xcr1234:norm:2.4")
'io.github.xcr1234:norm:jar:2.4'
<dependency org="io.github.xcr1234" name="norm" rev="2.4">
  <artifact name="norm" type="jar" />
</dependency>
@Grapes(
@Grab(group='io.github.xcr1234', module='norm', version='2.4')
)
libraryDependencies += "io.github.xcr1234" % "norm" % "2.4"
[io.github.xcr1234/norm "2.4"]

Dependencies

compile (1)

Group / Artifact Type Version
cglib : cglib jar 2.2

provided (9)

Group / Artifact Type Version
org.springframework : spring-core Optional jar 4.3.19.RELEASE
org.springframework : spring-beans Optional jar 4.2.5.RELEASE
org.springframework : spring-context Optional jar 4.2.5.RELEASE
org.springframework : spring-jdbc Optional jar 4.2.5.RELEASE
org.slf4j : slf4j-api Optional jar 1.7.25
org.springframework : spring-test Optional jar 4.2.5.RELEASE
org.mybatis : mybatis jar 3.4.4
org.mybatis : mybatis-spring jar 1.3.1
log4j : log4j jar 1.2.17

test (4)

Group / Artifact Type Version
junit : junit jar 4.12
com.h2database : h2 jar 1.3.162
mysql : mysql-connector-java jar 5.1.38
org.apache.commons : commons-dbcp2 jar 2.1.1

Project Modules

There are no modules declared in this project.

Norm - 一个Java的ORM框架

Norm是一套微型的JAVA数据库ORM库,提供了简单高效的 API,仅需一个600KB左右的JAR包。 让开发者不需要关心数据库操作的具体细节,只需专注SQL和业务逻辑。同时,也提供了对于事务、缓存是处理,支持在Spring环境中运行!

Norm的设计参考了Hibernate、Spring Data Jpa、Sqlla、DbUtils等数据库框架,它吸收了这些框架的优点,同时解决了一些开发过程中遇到的问题。它提供了简单的API,让开发者不需要关心数据库操作的具体细节,只需专注SQL和业务逻辑。同时简单的事务模型让开发过程增益很多。.

(Norm = N - ORM = Norm alize)

Norm 1.x版本(最新1.7.2)是作者自用的一个项目,已成功推广到公司项目使用;Norm 2.x版本对代码结构和质量、功能进行了全面重构,更加轻量级,逻辑更加清晰

支持版本为JDK1.6,老系统也能使用

依赖

2.x稳定版本,maven坐标:

<dependency>
    <groupId>io.github.xcr1234</groupId>
    <artifactId>norm</artifactId>
    <version>2.4</version>
</dependency>

简单使用

配置

Norm norm = new Norm();
norm.setDriverClass("com.mysql.jdbc.Driver"); 
norm.setUrl("jdbc:mysql://localhost:3306/test?useSSL=false");
norm.setUsername("root");
norm.setPassword("root");
norm.setShowSql(true);

创建实体类

package entity;

import norm.anno.Table;
import norm.anno.Id;
import norm.anno.Column;

@Table("tb_user")    //使用 Table 标识后,表名为@Table的值,如果没有 Table 标识,默认是类名)。
public class User {
    @Id
    private Integer id;
    @Column("username")  //使用 Column 标识后的属性使用标识的值来对应表中的列
    private String name;
    public User(){
        //必须有无参数默认构造函数
    }
    //省略get、set、toString方法
}

实体类的@Id和无参数默认构造函数是必须有的,且实体类不可为final。否则会抛出BeanException。

DAO 接口类

package dao;

import norm.CrudDao;
import entity.User;


public interface UserDao extends CrudDao<User,Integer>{

}

CrudDao是Norm框架提供的增删改查接口,由于UserDao继承了CrudDao<User,Integer>,因此UserDao就具备了对User实体进行增删改查的功能(Integer是User实体的Id字段的类型)。

不用写UserDao 接口的实现类,Norm框架会为你实现。

CRUD查询

UserDao userDao = norm.createDao(UserDao.class);

//find all 查询
List<User> userList = userDao.findAll();
System.out.println(userList);

 //find all 分页查询,MySQL,查询第2页的内容,每页3条。
norm.setPageSql(new MySQLPage());
Page page = new Page(2,3);
List<User> userListPaged = userDao.findAll(page);
System.out.println(userListPaged);

//find one查询
User user = userDao.findOne(8);
System.out.println(user);

//insert
User myUser = ...;
userDao.save(myUser);

//delete
userDao.delete(user);
userDao.deleteById(1);

代码生成器

自动生成java实体、dao、service、controller代码

https://github.com/xcr1234/norm-generator

Wiki

https://gitee.com/ironV/norm/wikis/pages

Versions

Version
2.4
2.3
2.1
2.0
1.7.2
1.7.1
1.7
1.6
1.5
1.4
1.3
1.2
1.1
1.0