一个轻量级,0配置ORM开源框架 sharkchili-feifei

1 篇文章 0 订阅
1 篇文章 0 订阅

sharkchili-feifei

Feifei is a slight orm frame,almost zero configuration but could config any one include custom container,
running in container based on original sql,supporting query based on object and string sql query.

Why developed feifei

I want to query without any string include table,column name,because i check the spelling of letters always,
and want to query with object directly but could query with sql string when i want,so i just do it.
Now,feifei could`t support all sql(like call desc(column)),you can query based on original sql when you experience it.

Links

Update version

How to build

Note that this is build-time requirement. JDK 8 is enough to run your feifei-based application.

How to start

Add this dependency to you pom.

    <dependency>
        <groupId>com.fishbyby.sharkchili</groupId>
        <artifactId>sharkchili-feifei</artifactId>
        <version>1.0.5</version>
    </dependency>
    <!-- For latest version find maven address above -->

Usages

SELECT

  • Query based on original sql.
    Query query = StudentQuery.create("SELECT * FROM student")
    List<Student> students = query.query();
  • Update based on EntityQuery.
    Query query = StudentQuery.create().select(Student.create().setName("mike").setAge(13));
    List<Student> students=query.query();
  • Query based on entity.
    Student condition = Student.create().setName("mike").setAddress("China");
    Student student = condition.selectSingle();

INSERT

  • Insert based on original sql.
    Query query = StudentQuery.create("INSERT INTO student(id,name,age) VALUES(1,'mike',15)");
    query.query();
  • Insert based on EntityQuery.
    Query query = EntityQuery.create().insert(Student.create().setName("Jenny").setAge(16).setAddress("America").setCreateTime(new Date()));
    query.query();
  • Insert based on Entity.
    Student student = Student.create().setName("Nick").setAge(10).setAddress("America").setCreateTime(new Date());
    student.insert();

UPDATE

  • Update based on original sql.
    Query query = StudentQuery.create("UPDATE student SET name='mike'");
    query.query();
  • Update based on EntityQuery.
    Query query = EntityQuery.create().update(Student.create().setId(1).setName("MIKE"));
    query.query();
  • Update based on Entity.
    Student student = Student.create().setId(18).setName("Nick").setAge(10).setAddress("China").setCreateTime(new Date());
    student.update();

DELETE

  • Delete based on original sql.
    Query query = StudentQuery.create("DELETE FROM student WHERE id=1");
    query.query();
  • Delete based on EntityQuery.
    Query query = EntityQuery.create().delete(Student.create().setName("Rose"));
    query.query();
  • Delete based on Entity.
    Student student = Student.create().setId(19);
    student.delete();

Config

Feifei have all default config instead of entity path.

Query config

  • entityPackage: path of your entity(it`s necessary).
  • queryOptions: provide option that whether return record,return id after querying or not,auto add from phrase,auto print query result and so on.
  • dataBaseType: type of your database,mysql supported temporarily.
  • connectionGet: how to get a connection,you can implement this interface to set how to get connection,use FeiFeiPoolDatasource by default.
  • ignore: ignore string when database table map to entity,eg table name ‘t_test_student’ -> ‘test’
  • nameStyle: the name style of database table and column.
  • cacheConfig: config of cache,if you need to use cache.

Cache config

  • openCache: if false,will query from database
  • fireType: type of fire cache,provide ANY(any query),THREAD(same thread),CONDITION_FIRE(config by yourself)
  • fireCaches: is corresponding fire type CONDITION_FIRE,implement FireCache class if you want config a condition to fire cache.
  • cacheStoryLoad: type of story cache,provide app cache now,will support redis cache later.
  • fireCacheManager: this need to ben config

Type of query supported

  • SINGLE_SQL: execute one sql per querying.
  • MULTI_SQL: execute multi sql per querying.
  • BATCH_SQL: execute multi sql that have same structure per querying on batch.

Detailed by class OperationType,set by call Query.queryData().setOperationType(OperationType operationType).

Paging querying supported conveniently

    Query<Student> queryPage = EntityQuery.<Student>create().select(Student.create());
    queryPage.pageSize(3).firstPage();
    // You need to save this queryPage object in your session for next querying,
    // It isn`t necessary call pageSize when next paging query.

Cache

Feifei close cache by default,but provide abundant cache firing condition,you can config it by yourself.

  • ANY: any query will fire cache,and query from cache firstly,query from database secondly.
  • SESSION: query from same thread will fire cache.
  • CONDITION_FIRE: you can implement interface FireCache to define a condition to fire cache.

Email me,if you have any idea.
Email: sharkchili.su@gmail.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值