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

来源:互联网 发布:手机淘宝安卓历史版本 编辑:程序博客网 时间:2024/05/29 18:57
简单介绍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 0