1.使用@Query 注释

public interface BookRepository extends JpaRepository<Book, Long>{@Query(value = "SELECT * FROM book WHERE name = ?1 AND borrowedAt IS NULL AND createdAt > ?2", nativeQuery = ture)List<Book> numsRes(String userName, Date rangeDate);
}

2.使用 JPAQuery

import com.mysema.query.types.Predicate@PersistenceContext(unitName = "book")
private EntityManager entityManager;QBook BOOK = QBook.book;private static final Expression<?>[] BOOK_FIELD = {BOOK.name,BOOK.id
};private Predicate makePredicate(String userName, Date createdAt){BooleanExpression predicate = null;List<BooleanExpression> ps = new ArrayList<>();if(userName != null){ps.add(BOOK.userName).eq(userName);}if(createdAt != null){ps.add(BOOK.creaedAt).goe(createdAt);}if(!ps.isEmpty()){predicate = ps.get(0);if(ps.size() == 2){predicate.and(ps.get(1));}}return predicate;
}private JPAQuery getQueryForBook(Predicate predicate, int startRow, int pageSize){Epression sortfield = BOOK.createdAt;OrderSpecifier orderSpecifier = new OrderSpecifier(Order.ASC, sortfield);JPAQuery jpaQuery = new JPAQUERY(entityManager);jpaQuery.from(BOOK).where(predicate).orderBy(sortfield).offset(startRow).limit(pageSize);return jpaQuery;
}private List<BookResult> getBook(Predicate predicate, int startRow, int pageSize){List<BookResult> list = new ArrayList<>();JPAQuery jpaQuery = getQueryForBook(predicate, startRow, pageSize);final List<Tuple> results = jpaQuery.list(BOOK_FIELD);for(Tuple tuple:results){list.add(wrapForBook(tuple));}return list;
}private BookResult wrapForBook(Tuple tuple){BookResult bookResult = new BookResult();bookResult.setName(tuple.get(BOOK.name));bookResult.setId(tuple.get(BOOK.id));return bookResult;
}

3.使用 Jdbctemplate

Jdbctemplate bookTemplate;
private static final String SQL = "SELECT * FROM book WHERE name = :name"
public List<BookResult> findBook(String name){Map<String, Object> params = new HashMap<>();params.put("name", name);return bookTemplate.query(SQL, params, new RowMapper<Book>(){@Overridepublic BookResult mapRow(ResultSet rs, int rowNum) throws SQLException{BookResult bookResult = new BookResult();bookResult.setid(rs.getLong("id"));return bookResult;}});
}

Java 连接数据库的几种方法相关推荐

  1. 连接数据库的五种方法

    连接数据库的五种方法 连接数据库的五种方法 方法一 方法二 方法三 方法四 方法五 连接数据库的五种方法 方法一 public void method1() throws SQLException { ...

  2. mysql远程连接数据库的二种方法_mysql 远程连接数据库的二种方法

    mysql 远程连接数据库的二种方法 一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口"3306",用户名为"roo ...

  3. Eclipse远程调试Java代码的三种方法

    Eclipse远程调试Java代码的三种方法, 第1种方法是用来调试已经启动的Java程序,Eclipse可以随时连接到远程Java程序进行调试, 第2种方法可以调试Java程序启动过程,但是Ecli ...

  4. java文件指针,Java 测试文件指针,java测试指针,两种方法打开文件并进行内

    Java 测试文件指针,java测试指针,两种方法打开文件并进行内 两种方法打开文件并进行内容定位package com.ronsoft.books.nio.channels;import java. ...

  5. VB.NET连接数据库的几种方法

    VB.NET连接数据库的几种方法 ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/WD_ADONET/html/745 ...

  6. 2021-05-28 sqlplus命令连接数据库的几种方法

    sqlplus命令连接数据库的几种方法 方法一:sqlplus / as sysdba 方法二:sqlplus username/passwd 方法三:sqlplus username/passwd@ ...

  7. 【224期】Java 字符串拼接五种方法的性能比较分析,从执行100次到90万次?

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

  8. eclipse 远程调试java_Eclipse远程调试Java代码的三种方法

    Eclipse远程调试Java代码的三种方法, 第1种方法是用来调试已经启动的Java程序,Eclipse可以随时连接到远程Java程序进行调试, 第2种方法可以调试Java程序启动过程,但是Ecli ...

  9. 【JDBC篇】Java连接数据库的五种方式,及什么是URL?

    目录 URL介绍: 连接数据库的五种方式 方式一: 方式二: 方式三: 方式四: 方式五:(最终版) URL介绍: JDBC URL 用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择 ...

最新文章

  1. 华为 Java 编程军规
  2. Linux中命令配置防火墙
  3. [AI开发]基于深度学习的视频多目标跟踪实现
  4. Ubuntu14.04下安装eclipse
  5. 我最近做产品的一些「感悟」
  6. 记录JS报错Cannot set property ‘onclick/xxx‘ of null
  7. Linux初级运维(十七)——Linux内核编译与系统裁减
  8. 类 workbooks 的 open 方法无效_第十九章 Cach 命令大全 OPEN 命令
  9. python怎样打开加密的文件_如何使用python加密多个文件
  10. ElasticSearch学习(三):配置与集群
  11. 脚本小子福利:安卓远控木马直接生成
  12. 简单的光线追踪教程(一)
  13. hadoop实现单词统计
  14. format mla_MLA Format MLA格式
  15. UA MATH564 概率论 概率不等式
  16. K8S搭建redis集群(2)使用redis-trib
  17. 初入职场着装宝典(BOY)
  18. HDP 2.6.5配置yarn的CGroups
  19. Erlang 下载安装
  20. 浅谈autolayout

热门文章

  1. [CF549F/51nod1472]Yura and Developers
  2. 第147杆147分诞生!吉尔伯特冠军联赛创历史
  3. 区块链技术的应用在数字藏品上的体现
  4. WordCloud词云图去除停用词的正确方法
  5. 我的世界服务器领地系统,我的世界服务器怎么创建领地
  6. 有向无环图——AOE网(关键路径)
  7. [Python]《点燃我,温暖你》李峋同款爱心代码
  8. 格式化什么意思?格式化了数据还能恢复吗?
  9. JCL,JES运作流程
  10. 2021年衡水中学高考成绩查询,2016年衡水中学高考成绩出炉