java使用querydsl(代替sql)查询数据库
2014-05-23 14:23
417 查看
简单介绍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文件送上
![](http://bbs.9ria.com/static/image/filetype/unknown.gif)
querydsl-core-2.2.3.jar (388.09
KB, 下载次数: 2)
![](http://bbs.9ria.com/static/image/filetype/unknown.gif)
querydsl-jpa-2.2.0-beta4-apt-hibernate-one-jar.jar (4.91
MB, 下载次数: 2)
![](http://bbs.9ria.com/static/image/filetype/unknown.gif)
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())
总之使查询方面的很,而且容易理解.相当给力.
具体的使用轻参考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文件送上
![](http://bbs.9ria.com/static/image/filetype/unknown.gif)
querydsl-core-2.2.3.jar (388.09
KB, 下载次数: 2)
![](http://bbs.9ria.com/static/image/filetype/unknown.gif)
querydsl-jpa-2.2.0-beta4-apt-hibernate-one-jar.jar (4.91
MB, 下载次数: 2)
![](http://bbs.9ria.com/static/image/filetype/unknown.gif)
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())
相关文章推荐
- java JDBC 连接数据库查询数据与直接使用sql的疑问
- 数据库SQL中的分钟表示应该使用MI(非常重要的一个问题,以前一直认为和java中一样,用mm就可以表示);校对规则(查询时区分大小写)
- oracle 数据库的管理工具 PL/SQL_Developer 的简易使用 与Java 连接并查询显示出数据
- 使用Java程序从数据库中查询大量的数据时出现异常:java.lang.OutOfMemoryError: Java heap space
- com.microsoft.sqlserver.jdbc.SQLServerException: 此查询使用的不是 ANSI 外部联接运算符("*=" 或 "=*")。若要不进行修改即运行此查询,请使用存储过程 sp_dbcmptlevel 将当前数据库的
- Java中使用hql,sql查询返回的list<Object> 转成需要的实体对象--方法讲解!
- 数据库知识—SQL查询语句精华使用简要
- 数据库知识—SQL查询语句精华使用简要
- 未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker
- LINQ to SQL 查询数据库和使用存储过程
- Java中使用hql,sql查询--多表查询后的新实体构建方法详解
- 在SQL查询中使用LIKE来代替IN查询的方法
- 在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。
- mysql 数据库字段为datetime类型时默认值为:0000-00-00 00:00:00 查询时异常 java.sql.SQLException:Value '0000-00-00' can not be represented as java.sq
- 未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker
- 数据库知识-SQL查询语句精华使用简要
- LINQ to SQL 查询数据库和使用存储过程
- Extjs分页使用java实现数据库数据查询
- 方正平台使用小妙招之在Java中通过SQL标记完成数据库的操作
- 在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。