java使用querydsl(代替sql)查询数据库

简单介绍Querydsl是一个Java开源框架用于构建类型安全的SQL查询语句。它采用API代替拼凑字符串来构造查询语句。可跟 Hibernate 和 JPA 等框架结合使用。
总之使查询方面的很,而且容易理解.相当给力.
具体的使用轻参考 http://www.querydsl.com/static/q ... nce/html/ch02.html.
  我只说我使用到的情况,简单容学.
//数据库连接池
ComboPooledDataSource cpds = (ComboPooledDataSource)context.getBean("dataSource");
querydsl中的类.下面几句主要生成Querydsl查询用到的类,与数据库中的表一直, 这些创建必须使用前.
MetaDataExporter exporter = new MetaDataExporter(); 
  exporter.setPackageName("querymodel");  
  exporter.setTargetFolder(new File("src/com/model"));   
  exporter.export(cpds.getConnection().getMetaData());

//查询
   QUser customer=QUser.user;
    SQLTemplates templates = new DerbyTemplates(); 
    SQLQuery query = new SQLQueryImpl(con, templates); 
    List<String> lastNames = query.from(customer) .where(customer.id.eq(1)).list(customer.username);
//更新
QUser2 customer=QUser2.user2;
SQLTemplates sqlTemplates = new MySQLTemplates();
SQLUpdateClause query = null;
  query = new SQLUpdateClause(con, sqlTemplates, customer);
  long i=query.where(customer.id.eq(id)).set(customer.score,score).execute();
其中QUser2 ,QUser2是自己被(  exporter.export(cpds.getConnection().getMetaData());)创建的,与数据库表一致.
大概就这些了,简单的查询未必可以看到他的好处,复杂的SQl的时候,方知道使用是多么的简单.
最后 把jar文件送上
  querydsl-core-2.2.3.jar (388.09 KB, 下载次数: 2) 
  querydsl-jpa-2.2.0-beta4-apt-hibernate-one-jar.jar (4.91 MB, 下载次数: 2) 
  querydsl-sql-2.2.3.jar (180.75 KB, 下载次数: 0) 
sql:
SELECT friends.id_friend, player.username, score.area, max(score.level), max(score.area)
FROM player
LEFT JOIN friends ON player.id = friends.id_friend
LEFT JOIN score ON player.id = score.id
WHERE friends.id_player =1 
GROUP BY score.id

querydsl:
query.from(player).leftJoin(friends).on(player.id.eq(friends.idFriend)).leftJoin(score).on(player.id.eq(score.id)).where(friends.idPlayer.eq(id)).list(player.id,player.username,score.area.max(),score.level.max())
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Querydsl是一个Java开源框架,用于构建类型安全的SQL查询语句。它提供了一种使用API来构造查询语句的方式,而不是像传统的拼接字符串的方式。可以与Hibernate和JPA等框架结合使用。 在使用Querydsl执行SQL语句时,可以使用以下步骤: 1. 创建一个JPAQuery对象,传入EntityManager参数,例如:JPAQuery query = new JPAQuery(entityManager); 2. 构建查询语句,可以使用select、from、join、where等方法进行构造。例如,可以使用select方法来选择需要查询的字段,使用from方法来指定查询的表,使用join方法来进行表连接,使用where方法来添加查询条件。 3. 可以使用limit和offset方法来限制查询结果的数量和偏移量。 4. 最后,使用fetch方法来执行查询并获取结果。 以上是一个复杂查询的示例代码,通过使用Querydsl的API来构造查询语句,并使用fetch方法执行查询并获取结果。在这个例子中,使用了select方法选择需要查询的字段,使用from方法指定查询的表,使用leftJoin方法进行表连接,使用where方法添加查询条件,使用limit和offset方法限制查询结果的数量和偏移量。最后,使用fetch方法执行查询并获取结果,遍历结果并将其转化为Map对象进行输出。 通过使用Querydsl的API,可以更方便地构建类型安全的SQL查询语句,并避免了手动拼接字符串的方式带来的错误和不安全性。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [SQL查询构建工具Querydsl.zip](https://download.csdn.net/download/weixin_39840914/11371139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [使用QueryDSL补充springDataJpa进行复杂动态sql语句进行sql查询 实现 关联 分页等功能](https://blog.csdn.net/u010838785/article/details/103954941)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值