Norm 数据库操作竟然可以如此简单

Norm

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

 

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

 

(Norm = N - ORM = Norm alize) 

快速开始

首先是引入JAR包,使用Maven/Gradle可以轻松依赖关系。但是我也提供了一个JAR包,直接引入项目即可。

 

Maven

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

Gradle

compile 'io.github.xcr1234:norm:1.1'

下载 

下载norm.jar

简单使用

完整的例子见:test.zip

 

Norm框架的核心类是norm.Norm和norm.Norms。

//Norm和Norms的关系相当于public static Norm Norms = new Norm();

Norms对象是Norm对象的一颗语法糖,它其实就是一个全局的Norm对象。有了Norms后,每次创建dao等操作就可以直接调用Norms上的静态方法了,不用每次new了。如果系统中没有跨数据库的需求,使用全局的Norms对象就可以了。

全局配置

复制代码

Norms.setDriverClass(JdbcDrivers.MYSQL);    // JdbcDrivers.MYSQL =  "com.mysql.jdbc.Driver"Norms.setUrl("jdbc:mysql://localhost:3306/test?useSSL=false");
Norms.setUsername("root");
Norms.setPassword("root");
Norms.setShowSql(true);
Norms.setFormatSql(true);

复制代码

局部配置

Configuration configuration = new Configuration(JdbcDrivers.MYSQL,"jdbc:mysql://localhost:3306/test","root","root");
Norm norm = new Norm(configuration);

 创建实体类

复制代码

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 = Norms.createDao(UserDao.class);//UserDao userDao = norm.createDao(UserDao.class);//find all 查询List<User> userList = userDao.findAll();
System.out.println(userList); //find all 分页查询,MySQL,查询第2页的内容,每页3条。Page page = Pages.create(Databases.MySQL,2,3);
List<User> userListPaged = userDao.findAll(page);
System.out.println(userListPaged);//find one查询User user = userDao.findOne(8);
System.out.println(user);//insertUser myUser = ...;
userDao.save(myUser);//deleteuserDao.delete(user);
userDao.deleteById(1);

复制代码

在Spring环境中使用

在Spring环境中,Norm框架的核心是norm.support.spring.NormContext,配置一个NormContext的bean即可。

在Spring环境中使用时,建议先配置一个单独的norm对象bean,如:

复制代码

    <bean class="norm.Configuration" id="configuration">
        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
        <property name="showSql" value="true"/>
        <property name="formatSql" value="false"/>
        <property name="cacheManager">
            <bean class="norm.cache.LruCacheManager">
                <constructor-arg value="10" />
            </bean>
        </property>
    </bean>

    <bean class="norm.Norm" id="norm">
        <property name="configuration" ref="configuration" />
    </bean>

复制代码

然后将这个norm传入NormContext bean中。

    <!--Norm框架在Spring中配置的核心,传入一个norm参数,表示数据库连接的配置信息-->
    <bean class="norm.support.spring.NormContext">
        <property name="norm" ref="norm" />
    </bean>

在Service中使用如下代码时,userDao会被自动注入。

 

 

复制代码

复制代码

package norm.test.service;import norm.support.spring.Dao;import norm.test.dao.UserDao;import norm.test.entity.User;import org.springframework.stereotype.Service;


@Servicepublic class TestService {

    @Dao    //这个注解加不加都是可以的
    private UserDao userDao;

}

复制代码

 

复制代码

 

<bean class="norm.test.service.TestService" id="testService"></bean>

高级特性

Norm框架同时支持自定义查询、引用查询(外键)、缓存、事务、多表连接查询这些非常有用的特性


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章