1. public class UserDaoImpl implements UserDao {
  2.  
  3. @Override
  4. public List<User> getUserByPage(PageInfo pif,User user){
  5. List<User> lu = new ArrayList<User>();
  6. Connection conn = DButil.getconn();
  7. // 注意拼接式字符串之间要有空格 userinfo u "
  8. String sql = "SELECT u.uname,u.uaddr from userinfo u ";
  9. // !"".equals(user.getUname()) 如果前段搜索用户名不填写,传到后端的是空值
  10. boolean contactAnd = false;
  11. String myWhere = "where";
  12. String myAnd = "and";
  13. List<String> params = new ArrayList<>();
  14. if(user.getUname()!=null&&!"".equals(user.getUname())) {
  15. if(contactAnd) {
  16. // " 空格 uname = ?空格 "
  17. sql += myAnd + " uname = ? ";
  18. }else {
  19. sql += myWhere + " uname = ? ";
  20. contactAnd = true;
  21. }
  22. params.add(user.getUname());
  23. }
  24. if(user.getUaddr()!=null&&!"".equals(user.getUaddr())) {
  25. if(contactAnd) {
  26. sql += myAnd + " uaddr like ? ";
  27. }else {
  28. sql += myWhere + " uaddr like ? ";
  29. contactAnd = true;
  30. }
  31. params.add("%"+user.getUaddr()+"%");
  32. }
  33. // 拼接分页查询的limit
  34. sql+= " Limit "+(pif.getPage()-1)*pif.getPageSize() +","+pif.getPageSize();
  35. try {
  36. PreparedStatement ps = conn.prepareStatement(sql);
  37. // 占位符个数不确定,所以不能直接.所以需要对是否有占位符有几个进行判断
  38. // 如果有拼接占位符号?,则在循环中对占位符进行赋值
  39. for(int i = 0;i<params.size();i++) {
  40. ps.setString(i+1,params.get(i));
  41. }
  42. ResultSet rs = ps.executeQuery();
  43. while(rs.next()) {
  44. User user1 = new User();
  45. user1.setUname(rs.getString("uname"));
  46. user1.setUaddr(rs.getString("uaddr"));
  47. lu.add(user1);
  48. }
  49. System.out.println(lu);
  50. } catch (SQLException e) {
  51. e.printStackTrace();
  52. }
  53. return lu;
  54. }

  

Java数据库学习之SQL语句动态拼接的更多相关文章

  1. Java web实现综合查询+SQL语句拼接

    首先展示图形界: 界面比较简单,但麻雀虽小五脏俱全.因为数据库只有六种数据类型,所以最多添加六个查询框. 测试以下问题: 删除方式是从上往下开始的,如果删除之后会有问题.(后续改进ing) 若干个并且 ...

  2. 在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。

    在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计.SQL语句.java等层面的解决方案. 解答: 1)数据库设计方面: a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 whe ...

  3. SQL数据库学习,常用语句查询大全

    数据库学习 sql server数据库基本概念 使用文件保存数据存在几个缺点: 1.文件的安全性问题: 2.文件不利于查询和对数据的管理: 3.文件不利于存放海量数据 4.文件在程序中控制不方便. 数 ...

  4. [转帖]关于Java中SQL语句的拼接规则

    关于Java中SQL语句的拼接规则 自学demo 的时候遇到的问题 结果应该是 '"+e.getName()+"' 注意 一共有三组标点符号 (除去 方法函数后面的括号) 实现目标 ...

  5. Java数据库学习之模糊查询(like )

    Java数据库学习之模糊查询(like ): 第一种方式:直接在SQL语句中进行拼接,此时需要注意的是parm在SQL语句中需要用单引号拼接起来,注意前后单引号之间不能空格 String sql = ...

  6. java执行多条SQL语句

    一次执行多条SQL的技术要点如下: DatabaseMetaData接口是描述有关数据库的整体综合信息,由于DatabaseMetaData是接口,所以没有构造方法,故不能使用new来创建Databa ...

  7. 理想中的SQL语句条件拼接方式 (二)

    问题以及想要的效果,不重复叙述,如果需要的请先看 理想中的SQL语句条件拼接方式 . 效果 现在有2个类映射数据库的2张表,结构如下: public class User { public int U ...

  8. 通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷

    原文:通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷 通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷.效果如下: 步骤1:通过MyEcl ...

  9. 【转载】 Sqlserver查看数据库死锁的SQL语句

    在Sqlsever数据库中,有时候操作数据库过程中会进行锁表操作,在锁表操作的过程中,有时候会出现死锁的情况出现,这时候可以使用SQL语句来查询数据库死锁情况,主要通过系统数据库Master数据库来查 ...

随机推荐

  1. Pycharm使用教程(四)-安装python依赖包(非常详细,非常实用)

    简介 在做python开发时,需要很多依赖包,如果已经安装pip,安装依赖包,可以通过命令行:没有安装的,也可以通过PyCharm安装. 具体安装步骤 1.在File->Setting,如图: ...

  2. Android多Module下的Application引用方式

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 Android开发时,Application一般都放在APP中,Lib模块如果想引用Application则需要在APP中进行传递, ...

  3. Bumblebee微服务网关的部署和扩展

    Bumblebee是.netcore下开源基于BeetleX.FastHttpApi扩展的HTTP微服务网关组件,它的主要作用是针对WebAPI集群服务作一个集中的转发和管理:作为应用网关它提供了应用 ...

  4. java~api返回值的标准化

    api返回值的标准化 例如 {"status":200,"message":"操作成功","data":"{\ ...

  5. Java基础系列-Stream

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/10748817.html 一.概述 Stream操作简称流操作,这里的流与IO流毫无关系, ...

  6. 一次node-sass安装记录

    node-sass的版本是3.9.3 Please restart this script from an administrative PowerShell! 在当前powershell中执行下命令 ...

  7. asp.net三层架构增删改查

    数据库 use master if exists (select * from sysdatabases where name='bond') drop database bond create da ...

  8. jsp内置对象-application对象

    隐含对象application是javax.servlet.ServletContext接口实现类的对象,其拥有application的作用范围,即application可以用于在多个用户之间保存数据 ...

  9. KsUML 免费的类图建模工具

    最近基于SharpDevelop和NClass两个开源软件,开发了一个免费的类图建模工具,详情请访问 www.TimeGIS.com KsUML类图建模工具是一个用来给软件开发人员使用的一种UML类图 ...

  10. 浅谈Flutter(一):搭建Flutter开发环境

    学习内容来自: Flutter中文网  . Flutter实战 -------------------------------------------------------------------- ...