• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

weed3: noear::微型ORM框架(支持:java sql,xml sql,annotation sql;事务;缓存; ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

weed3

开源软件地址:

https://gitee.com/noear/weed3

开源软件介绍:

Maven CentralApache 2.0JDK-8+QQ交流群

Weed for java

微型ORM框架(支持:java sql,xml sql,annotation sql,template sql;事务;缓存;监控;等...)

Weed3 特点和理念:

  • 跨平台:可以嵌入到JVM脚本引擎(js, groovy, lua, python, ruby)及GraalVM支持的部分语言。
  • 很小巧:0.1Mb(且是功能完整,方案丰富;可极大简化数据库开发)。
  • 有个性:不喜欢反射、不喜欢配置...(除了连接,不需要任何配置)。
  • 其它的:支持缓存控制和跨数据库事务(算是分布式事务的一种吧)。

核心对象和功能:

  • 上下文:DbContext db
  • 四个接口:db.mapper(), db.table(), db.call(), db.sql()
//BaseMapper 接口db.mapperBase(User.class).selectById(1);//BaseMapper 接口,条件查询db.mapperBase(User.class).selectList(mq->mq.whereLt(User::getGroup,1).andEq(User::getLabel,"T"));//Table 接口db.table("user u")  .innerJoin("user_ext e").onEq("u.id","e.user_id")  .whereEq("u.type",11)  .limit(100,20)  .selectList("u.*,e.sex,e.label", User.class);//Table 接口,拼装条件查询(特别适合管理后台)db.table(logger)  .where("1 = 1")  .andIf(TextUtils.isNotEmpty(trace_id), "trace_id = ?", trace_id)  .andIf(TextUtils.isNotEmpty(tag), "tag = ?", tag)  .andIf(TextUtils.isNotEmpty(tag1), "tag1 = ?", tag1)  .andIf(TextUtils.isNotEmpty(tag2), "tag2 = ?", tag2)  .andIf(TextUtils.isNotEmpty(tag3), "tag3 = ?", tag3)  .andIf(log_date > 0, "log_date = ?", log_date)  .andIf(log_id > 0, "log_id <= ?", log_id)  .andIf(level > 0, "level=?", level)  .orderBy("log_fulltime desc")  .limit(size)  .selectList("*", LogModel.class);

相关文章:

组件列表:

组件说明
org.noear:weed3主框架(没有任何依赖)
可选组件说明
org.noear:weed3-maven-pluginMaven插件,用于生成Xml sql mapper
org.noear:weed3.cache.memcached基于 Memcached 适配的扩展缓存服务
org.noear:weed3.cache.redis基于 Redis 适配的扩展缓存服务
org.noear:weed3.cache.ehcache基于 ehcache 适配的扩展缓存服务
org.noear:weed3.cache.j2cache基于 j2cache 适配的扩展缓存服务

Meven配置:

<!-- 框架包 --><dependency>    <groupId>org.noear</groupId>    <artifactId>weed3</artifactId>    <version>3.4.19</version></dependency><!-- 可选:maven 插件,用于生成Xml sql mapper接口 --><plugin>    <groupId>org.noear</groupId>    <artifactId>weed3-maven-plugin</artifactId>    <version>3.4.19</version></plugin>

入门示例:

/** 1.实例化上下文 *///DbContext db  = new DbContext(properties); //使用Properties配置的示例//DbContext db  = new DbContext(map); //使用Map配置的示例//DbContext db  = new DbContext("user","proxool.xxx_db"); //使用proxool线程池配置的示例//DbContext db  = new DbContext("user",new HikariDataSource(...)); //使用DataSource配置的示例DbContext db  = new DbContext("user","jdbc:mysql://x.x.x:3306/user","root","1234");/** 2.1.Mapper用法 */@Namespace("demo.dso.db")public interface UserDao extends BaseMapper<UserModel>{    @Sql("select * from user where id=@{id} limit 1")    UserModel getUser(int id);      @Sql("select * from user where id=? limit 1")    UserModel getUser2(int id);    void addUser(UserModel user); //没注解,需要配xml}UserDao userDao = db.mapper(UserDao.class);//调用 BaseMapper 方法userDao.selectById(12); //调用 @Sql 方法UserModel user = userDao.getUser(2); //调用 Xml sqluserDao.addUser(user); //调用Template sqlStatModel stat = userDao.userStat(20201010);/** 2.2.Table用法 *///增::db.table("user").setEntity(user).insert();db.table("user").setMap(map).insert();//删::db.table("user").whereEq("id",2).delete();//改::db.table("user").set("sex",1).whereEq("id",2).update();//查::db.table("user u")  .innerJoin("user_ext e").onEq("u.id","e.user_id")  .whereEq("u.id",1001)  .selectItem("u.*,e.sex,e.label", User.class);/** 2.3.Call用法 *///调用存储过程db.call("user_get_list_by").set("_type",12).getList(User.class);//调用xml sqldb.call("@demo.dso.db.user_get").set("id",1001).getItem(User.class);/** 2.4.Sql用法 *///快速执行SQL语句db.sql("select * from user id=?",12).getItem(User.class);

附:语法参考:

(一)Xml sql 语法
  • 示例
<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE mapper PUBLIC "-//noear.org//DTD Mapper 3.0//EN" "http://noear.org/dtd/weed3-mapper.dtd"><mapper namespace="weed3demo.xmlsql2"        import="demo.model.*"        baseMapper="UserModel">    <sql id="getUser" return="UserModel" remarks="获取用户信息">        SELECT * FROM user WHERE id = @{id:int}    </sql></mapper>
(二)Table 语法
  • 条件操作(与Mapper共享)
方法效果说明
where, whereIf
whereEq, whereNeq==, !=
whereLt, whereLte<, <=
whereGt, whereGte>, >=
whereLk, whereNlkLIKE, NOT LIKE
whereIn, whereNinIN(..), NOT IN(..)
whereBtw, whereNbtwBETWEEN, NOT BETWEEN
and系统方法同where
or系统方法同where
begin(
end)
  • 表操作(Table独占)
方法效果说明
set, setIf设置值
setMap, setMapIf设置值
setEntity, setEntityIf设置值
table主表
innerJoin, leftJoin, rightJoin关联表
on, onEq关联条件
orderBy, orderByAsc, orderByDesc排序
groupBy
having组条件
limit限制范围
select查询(返回IQuery)
count查询快捷版,统计数量
exists查询快捷版,是否存在
update更新
insert插入
delete删除

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap