atitit.orm的缺点与orm框架市场占有率,选型attilax总结

atitit.orm的缺点与orm框架市场占有率,选型attilax总结

 

1. attilaxorm框架要求 1

2. orm框架市场占有率 2

3. spring jdbc templt 3

4. eclipselink /toplink  不好用 4

5. jooq 的总结 4

6. attilax的选择 atiorm 4

7. 参考 4

 

1. attilaxorm框架要求

 

1.无需配置文件或注解。。直接从mapjson生成sql

2.直接获取sql。。无需连接数据库。。方便调试。或这sql传输。

 

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

 

2. orm框架市场占有率

 

orm frameworks in use

hb 67

jdbc  22

spring jdbc template 20

eclipselink 13

mybatis 7

jooq 2

 

datasource:::REBELLABS (  WEBSITE RESEARCH 

结论如图。
但无论如何,仅仅就使用ORM框架而言,楼主大可放心去学习,不用担心时间成本的问题,不会占太多时间的

 

 

3. spring jdbc templt

2、使用NamedParameterJdbcTemplate类,实现JDBC,参数是用Map集合传递的

·    @Override  

·      public void insert(User entity) {  

·          // TODO Auto-generated method stub  

·          String sql="insert into user(name,age,sex) values(:name,:age,:sex)";  

·          Map<String,Object> map=new HashMap<String,Object>();  

·          map.put("name", entity.getName());  

·          map.put("age", entity.getAge());  

·          map.put("sex", entity.getSex());  

·          int temp=npjt.update(sql, map);  

·          if(temp>0){  

·              System.out.println("插入成功!");  

·          }else{  

·              System.out.println("插入失败!");  

·          }  

·      }  

 

·    @Override  

·      public void update(User entity) {  

·          // TODO Auto-generated method stub  

·          String sql="update user set name=:name,age=:age,sex=:sex where id=:id";  

·          Map<String,Object> map=new HashMap<String,Object>();  

·          map.put("name", entity.getName());  

·          map.put("age", entity.getAge());  

·          map.put("sex", entity.getSex());  

·          map.put("id", entity.getId());  

·          int temp=npjt.update(sql, map);  

·          if(temp>0){  

·              System.out.println("更新成功!");  

·          }else{  

·              System.out.println("更新失败!");  

·          }  

·      }  

 

4. eclipselink /toplink  不好用

5. jooq 的总结

 

1. create.select(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, count())  

2.       .from(T_AUTHOR)  

3.       .join(T_BOOK).on(T_BOOK.AUTHOR_ID.equal(T_AUTHOR.ID))  

4.       .where(T_BOOK.LANGUAGE.equal("DE"))  

5.       .and(T_BOOK.PUBLISHED.greaterThan(parseDate('2008-01-01')))  

6.       .groupBy(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME)  

7.       .having(count().greaterThan(5))  

8.       .orderBy(T_AUTHOR.LAST_NAME.asc().nullsFirst())  

9.       .limit(1, 2)  

10.       .forUpdate();  

jooq使用ide会方便。。但是不能自动map json to ,所以,还是麻烦。

6. attilax的选择 atiorm

看起来spring temple最好使用...使用累挂三,好香要事务才能使用了...transac,走不能保存...

 

子好嘎自orm..

 

7. orm的优点在接口使用中

直接提供的走十json的接口,,直接转换成个orm走十好用啊..

8. 参考

Spring中使用JDBC做的增删改查 - - ITeye技术网站.htm

 

转载于:https://www.cnblogs.com/attilax/p/5963747.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(1366):express入门

const express require(express);const app express(); app.get(/, (req, res) > {//send 响应内容的累心//http 状态码res.send(hello geyao); }) app.get(/list, (req, res) > {//send 响应内容的累心//http 状态码res.send({ name: 张三, age: 20 }); }) app.listen…

python中参数传递_python中参数传递

在编程语言中&#xff0c;函数的参数传递有两种情况&#xff1a;按值类型传递num 10def double(arg):argarg*2print(arg)double(num)调用该函数&#xff0c;传入一个变量&#xff0c;其实传入的是该变量的一个副本&#xff0c;该变量在函数中发生变化&#xff0c;不影响函数外…

Hybrid框架UI重构之路:五、前端那点事儿(HTML、CSS)

上文回顾 &#xff1a;Hybird框架UI重构之路&#xff1a;四、分而治之 这里讲述在开发的过程中&#xff0c;一些HTML、CSS的关键点。 单页模式的页面结构在单页模式中&#xff0c;弱化HTML的概念&#xff0c;把HTML当成一个容器&#xff0c;BODY中显示的主体内容才是页面&#…

前端学习(1367):什么是中间件

const express require(express);const app express(); app.get(/request, (req, res, next) > {//send 响应内容的累心//http 状态码req.name 张三;next(); }) app.get(/request, (req, res) > {//send 响应内容的累心//http 状态码res.send(req.name); }) app.liste…

python choose语句作用_理解闭包是如何与变量作用域相互影响的

原文标题&#xff1a;KNOW HOW CLOSURES INTERACT WITH VARIABLE SCOPE比如说你现在想要对一组数字进行排序&#xff0c;同时希望提高一组数字的优先级使这组数字优先显示。这种模式在展示用户接口时非常有用&#xff0c;在展示用户接口时经常需要优先展示一些重要信息以及异常…

前端学习(1368):app.use使用

const express require(express);const app express(); app.use((req, res, next) > {console.log(请求走了use中间件);next(); }) app.use(/request, (req, res, next) > {console.log(请求走了use中间件/hh)next() }) app.get(/list, (req, res) > {//send 响应内…

JDE Client开发端 左侧边栏设置

转载于:https://www.cnblogs.com/GYoungBean/p/4299317.html

cmd oracle 连接实例_C#连接Oracle数据库的实例方法

1.建立连接字符串&#xff0c;里面包含数据库名称、用户名和密码2.建立操作字符串&#xff0c;里面是对数据操作的SQL语句3.建立Connection&#xff0c;用连接字符串作为参数建立4.建立Command&#xff0c;用操作字符串和Connection作为参数5.建立DataAdapter&#xff0c;用Com…

59-混沌操作法感悟2.(2015.2.25)

混沌操作法感悟2羊年到了&#xff0c;今年要好好努力&#xff0c;争取赚到满意的收入。今天刚来到上海&#xff0c;明天开始上班&#xff0c;今天更新下春节期间在家的思考。随机性被视为噪音是因为时间因素&#xff0c;时间框架的长短性。如果以小时为时间框架&#xff0c;这种…

insert事务隔离mysql_MySQL数据库详解(三)MySQL的事务隔离剖析

提到事务&#xff0c;你肯定不陌生&#xff0c;和数据库打交道的时候&#xff0c;我们总是会用到事务。最经典的例子就是转账&#xff0c;你要给朋友小王转 100 块钱&#xff0c;而此时你的银行卡只有 100 块钱。转账过程具体到程序里会有一系列的操作&#xff0c;比如查询余额…

前端学习(1369):中间件应用

const express require(express);const app express(); app.use((req, res, next) {res.send(网站维护中); }) app.use(/admin, (req, res, next) > {let isLogin false;if (isLogin) {next()} else {res.send(你还没有登录);} }) app.get(/admin, (req, res) > {res.…

宽容与忍耐 忍乃济——这是《尚书》这部中国令世人刮目的奇书告诉我们的真理 保身第一法:谦逊;处事第一法:安详;待人第一法:涵容(宽容);养心第一法:洒脱...

宽容与忍耐 不让古人&#xff0c;是谓有志&#xff1b;不让今人&#xff0c;是谓无量。 忍耐若与敏感、魄力、思维、迅速行动结合&#xff0c;将所向无敌。 脾气服从理性的判断才会成功&#xff0c;否则只是动物式愤怒欲的满足&#xff0e;或从心理学的角度讲是怒需求。 大智者…

mysql数据表交叉引用_数据定义语句

数据定义语句MySQL 8.0支持原子数据定义语言(DDL)语句。此功能称为原子DDL。原子DDL语句将数据字典更新&#xff0c;存储引擎操作和与DDL操作相关联的二进制日志写入操作组合到单个原子事务中。即使事务在操作期间停止&#xff0c;事务也可以提交&#xff0c;并在数据字典&…

前端学习(1370):错误处理中间件

const express require(express);const app express(); app.get(/index, (req, res) > {throw new Error(程序发生了错误);/* res.send(); */ }) app.use((err, req, res, next) > {res.status(500).send(err.message); }) app.listen(3000); console.log(服务器启动成…

MySQL官方备份_Mysqlbackup 备份详解(mysql官方备份工具)

A.1全库备份.命令:mysqlbackup--defaults-file/home/mysql-server/mysql3/my.cnf --userroot --passwordroot --databases"mysql total2" --with-timestamp --backup-dir/home/mysql-server/backup backup参数说明&#xff1a;--defaults-filemy.cnf文件的路径…

Linux下的库文件搜索路径

对于以压缩包发布的软件&#xff0c;在它的目录下通常都有一个配置脚本configure&#xff0c;它的作用确定编译参数(比如头文件位置、连接库位置等)&#xff0c;然后生成Makefile以编译程序。可以进入该软件的目录&#xff0c;执行"./configure --help"命令查看使用帮…

慕课笔记 mysql读写分离_mysql读写分离笔记

主数据库执行命令&#xff1a;show master status;得到结果mysql-bin.0000092123从数据库执行命令stop slave;change master tomaster_host47.95.247.135,master_port3306,master_userroot,master_passwordroot,master_log_filemysql-bin.000009,master_log_pos4353;start slav…

ruby记录

ruby记录 --posted on 2015-02-28 20:52 zlingh 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/zlingh/p/4306195.html

前端学习(1372):构建模块化路由

const express require(express);const app express(); //创建路由对象 const home express.Router(); app.use(/home, home); home.get(/index, (req, res) > {res.send(欢迎来到我的页面) }) app.listen(3000); console.log(服务器启动成功); 运行结果

做移动端视频通话软件,大致看了下现有的开源软件(转)

转自&#xff1a;链接 要做一个移动端视频通话软件&#xff0c;大致看了下现有的开源软件一) sipdroid1&#xff09;架构sip协议栈使用JAVA实现&#xff0c;音频Codec使用skype的silk&#xff08;Silk编解码是Skype向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音…