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框架同時支持自定義查詢、引用查詢(外鍵)、緩存、事務、多表連接查詢這些非常有用的特性


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