日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Hibernate VS Mybatis 的SQL不灵活通病如何解决?

發(fā)布時間:2025/3/16 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate VS Mybatis 的SQL不灵活通病如何解决? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
JAVA開發(fā)者目前主流的持久層是Mybatis和Hibernate。Mybatis靈活好控制,優(yōu)化SQL更方便,一般互聯(lián)網(wǎng)項目用的比較多;Hibernate更智能,基于單表和復雜關系表的SQL可以自動生成,開發(fā)效率更高,但是針對復雜SQL,hibernate能力不足,存在性能不足和不夠靈活的問題。?

? ? ? 這個時候大家就想到集成mybatis,但是一個項目既用hibernate又用mybatis,顯得很重,事務也不好控制。大家常規(guī)的做法是采用springjdbc來實現(xiàn)原生SQL編寫,但是也存在一個問題,SQL無法分離也沒有邏輯標簽能力。

? ? ?為了解決這個問題,Jeecg針對springjdbc+freemaker做了封裝,出了這么一個輕量級持久層,可以讓Hiberate擁有mybatis一樣SQL靈活能力,同時支持事務統(tǒng)一管理和SQL標簽能力。

? ? ??

MiniDao 簡介及特征

MiniDao 是一款輕量級JAVA持久層框架,基于 SpringJdbc + freemarker 實現(xiàn),具備Mybatis一樣的SQL分離和邏輯標簽能力。Minidao產(chǎn)生的初衷是為了解決Hibernate項目,在復雜SQL具備Mybatis一樣的靈活能力,同時支持事務同步。

具有以下特征:

  • O/R mapping不用設置xml,零配置便于維護
  • 不需要了解JDBC的知識
  • SQL語句和java代碼的分離
  • 只需接口定義,無需接口實現(xiàn)
  • SQL支持腳本語言(強大腳本語言,freemarker語法)
  • 支持與hibernate輕量級無縫集成
  • 支持自動事務處理和手動事務處理
  • 性能優(yōu)于Mybatis
  • SQL標簽采用Freemarker的基本語法

接口定義[EmployeeDao.java]

@MiniDao public interface EmployeeDao {@Arguments({ "employee"})@Sql("select * from employee")List<Map<String,Object>> getAll(Employee employee);@Sql("select * from employee where id = :id")Employee get(@Param("id") String id);@Sql("select * from employee where empno = :empno and name = :name")Map getMap(@Param("empno")String empno,@Param("name")String name);@Sql("SELECT count(*) FROM employee")Integer getCount();int update(@Param("employee") Employee employee);void insert(@Param("employee") Employee employee);@ResultType(Employee.class)public MiniDaoPage<Employee> getAll(@Param("employee") Employee employee,@Param("page") int page,@Param("rows") int rows);

}

SQL文件[EmployeeDao_getAllEmployees.sql]

SELECT * FROM employee where 1=1 <#if employee.age ?exists> and age = :employee.age </#if> <#if employee.name ?exists> and name = :employee.name </#if> <#if employee.empno ?exists> and empno = :employee.empno </#if>

###接口和SQL文件對應目錄

MiniDao在spring中配置

<!-- MiniDao動態(tài)代理類 --> <bean id="miniDaoHandler" class="org.jeecgframework.minidao.factory.MiniDaoBeanScannerConfigurer"><!-- 是使用什么字母做關鍵字Map的關鍵字 默認值origin 即和sql保持一致,lower小寫(推薦),upper 大寫 --><property name="keyType" value="lower"></property><!-- 格式化sql --><property name="formatSql" value="false"></property><!-- 輸出sql --><property name="showSql" value="false"></property><!-- 數(shù)據(jù)庫類型 --><property name="dbType" value="mysql"></property><!-- dao地址,配置符合spring方式 --><property name="basePackage" value="examples.dao.*"></property><!-- 使用的注解,默認是Minidao,推薦 Repository--><property name="annotation" value="org.springframework.stereotype.Repository"></property><!-- Minidao攔截器配置 --><property name="emptyInterceptor" ref="minidaoInterceptor"></property> </bean>

測試代碼

public class Client { public static void main(String args[]) {BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");EmployeeDao employeeDao = (EmployeeDao) factory.getBean("employeeDao");Employee employee = new Employee();String id = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();employee.setId(id);employee.setEmpno("A001");employee.setSalary(new BigDecimal(5000));employee.setBirthday(new Date());employee.setName("scott");employee.setAge(25);//調用minidao方法插入employeeDao.insert(employee); } }

技術交流

  • 源碼下載: https://github.com/zhangdaiscott/MiniDao
  • 論 壇:?www.jeecg.org
  • 郵 箱:?jeecg@sina.com
  • QQ交流群:325978980、143858350

總結

以上是生活随笔為你收集整理的Hibernate VS Mybatis 的SQL不灵活通病如何解决?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 可以免费看毛片的网站 | 国产中文字幕在线观看 | 久久99久久久 | 性中文字幕 | 成人黄色小视频在线观看 | 欧美a级大片 | 久久97久久97精品免视看 | 欧美成人aaa片一区国产精品 | 国产精品porn | 视频一区二区三区精品 | 欧美经典一区二区三区 | 欧美群交射精内射颜射潮喷 | 亚洲色图36p | 久久久久xxxx | 韩国特级毛片 | av私库 | 国产a√精品区二区三区四区 | 性网| 亚洲成人不卡 | 欧美日本免费 | 午夜在线免费观看 | 中文字幕色站 | 午夜福利一区二区三区 | 国产福利精品在线 | 奇米影视盒 | 亚洲欧美综合网 | 一区二区三区高清 | 在线免费观看www | 日韩高清欧美 | 久99 | 欧美日韩一区二区三区在线电影 | 97福利网| 三级自拍视频 | a级片一区二区 | 日韩毛片在线播放 | 美女视频久久久 | 亚洲美女www午夜 | 婷婷国产一区二区三区 | www国产亚洲精品 | 微拍福利一区二区 | 国产欧美又粗又猛又爽 | xxxx日本免费 | 亚洲欧美另类在线视频 | 欧美一区二区视频在线 | 污视频在线观看免费 | 国产色爱| 亚洲成人午夜电影 | 免费日韩在线 | 成人午夜av在线 | 意大利少妇愉情理伦片 | 成人在线网址 | 欧美一级性片 | 国产又粗又黄视频 | 91在线成人| 与亲女洗澡时伦了毛片 | 99国产免费 | 国产在线一区二区视频 | 米奇7777狠狠狠狠视频 | 黄骗免费网站 | 亚洲精品高清在线观看 | 黑人vs日本人ⅹxxxhd | 天美视频在线观看 | 性感美女黄色片 | 日韩欧美在线观看一区二区 | 亚洲色图日韩精品 | 毛片链接| 中文字幕无码日韩专区免费 | 午夜av免费在线观看 | 成人免费网址 | 中文字幕日本人妻久久久免费 | av男人的天堂在线观看 | 亚洲欧洲日本精品 | 岛国片在线播放 | 欧美日韩色片 | 国产在线一卡二卡 | 国产h视频 | 亚洲啪av永久无码精品放毛片 | 欧洲精品一区二区三区 | 久热超碰| 婷婷视频一区二区三区 | 国产日韩一区二区在线观看 | av制服丝袜在线 | 日韩一区免费 | 按摩害羞主妇中文字幕 | 亚洲精品久久久久久久久久久久久 | 久草资源在线视频 | 日韩黄色av网站 | 影音先锋制服 | 久久久免费观看视频 | 精品一区二区三区蜜臀 | av在线不卡免费看 | 国产一区二区在线免费观看视频 | 亚洲男男网站 | aa丁香综合激情 | 免费性爱视频 | 色综合久久中文字幕无码 | 91精品久| 欧美电影一区二区三区 | 91毛片网站 |