Java 连接数据库的几种方法
来源:互联网 发布:中级软件设计师 编辑:程序博客网 时间:2024/06/05 06:53
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>(){ @Override public BookResult mapRow(ResultSet rs, int rowNum) throws SQLException{ BookResult bookResult = new BookResult(); bookResult.setid(rs.getLong("id")); return bookResult; } });}
阅读全文
0 0
- Java 连接数据库的几种方法
- [整理]Java连接数据库的几种方法
- asp连接数据库的几种方法
- jsp连接数据库的几种方法
- .NET连接数据库的几种方法
- delphi连接数据库的几种方法
- ADO连接数据库的几种方法
- 连接oracle数据库的几种方法
- sqlplus连接数据库的几种方法
- .NET连接数据库的几种方法
- java连接数据库的几种方式
- java连接数据库的几种方式
- Java连接数据库的几种方式
- java连接oracle的几种方法
- java连接mysql的几种方法
- 几种常见的连接数据库的方法
- VB.NET连接数据库的几种方法
- asp.net的几种简单连接数据库方法
- 代码这样写不止于优雅(Python版)
- Python 编码为什么那么蛋疼?
- 爬虫入门系列(一):快速理解HTTP协议
- 程序和设计有何不同
- 爬虫入门系列(二):优雅的HTTP库requests
- Java 连接数据库的几种方法
- Python函数是所谓的第一类对象(First-Class Object)是什么鬼?
- 【CTO讲堂】双创背景下的移动开发及变现之路
- 爬虫入门系列(三):用 requests 构建知乎 API
- 完全理解Python关键字"with"与上下文管理器
- 爬虫入门系列(四):HTML文本解析库BeautifulSoup
- optparse参数输入
- Lambda函数与群众演员的共同之处是?
- 一步一步教你认识Python闭包