多条件模糊查询问题 分页问题 批处理问题 Java代码写MySQL遇到的

这个周五找了个小题目,就是mysql的东西

做一个bookStore书店系统 时间问题 就没写页面 用控制台输出

在做的过程中重温了以前的东西

但也遇到了不会的,现在总结一下

1.多条件模糊查询问题

2.分页问题

3.批处理问题

结尾给出建表代码

产品信息表Products

用户表User

订单表Orders

订单项表OrderItem

1.针对Products表的多条件模糊查询

单条件使用like即可 然后中间变量加 百分号

类似于

SELECT * FROM products WHERE name LIKE '%S%'

这样查询出来name值中带有S的

6	CSS入门	50.8	前端	55	big.png	从入门到放弃
7	JSP入门	80.8	前端	55	big.png	从入门到放弃
'%S'  这样就是匹配以S结尾的
'S%'  这样就是匹配以S开始的

还有其他的一些字符 总结下

通配符的分类:
%百分号通配符: 表示任何字符出现任意次数 (可以是0次).  %不能匹配某值为null的记录
_下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符.

具体的解释 看这篇博客即可 解释的很详细

注意这篇博客结尾处的注意 ‘不要把它们用 在搜索模式的开始处’

的意思是 在数据量大的时候 以百分号开头’%keyword%’ 会全表扫描,效率极低

请看这篇博客的开头处

对于提高mysql模糊查询效率,使用除like的其他方法,我在查询学习后再整理一篇博客。

ok,言归正传,具体到我不会的问题

就是以java和mysql语句去模糊查询 多个条件 id 名称 分类 和 日期

正常在web页面显示就是几个个框 然后一个搜索按钮

输入完成后点击即搜索 并且在前端或者后台处理一下哪个值没输入或者为空 然后再用sql语句处理

现在用控制台输入 这几个条件 也有可能不输入直接回车 就是这几个变量可能为空可能不为空 咋办:

那现在怎么处理呢

答案很简单 之前我还学过几天的SSM,怎么就忘了呢 , Mybatis里面做的模糊查询 就是用的 sql拼接

sql拼接

直接贴代码吧 将三个变量初始化为空值 不是null 然后从空值台接收值

封装进实体类即可 因为还有价格区间为了传参方便 重新封装一个实体类

首先是控制台界面

System.out.println("欢迎来到商品模糊查询页面,下面输入条件,不想输入回车即可");
        System.out.println("----------------------");
        String id = "";
        String name = "";
        String category = "";
        String min = "";
        String max = "";
        Scanner input = new Scanner(System.in);
        System.out.println("请输入要查询的商品id:");
        id = input.nextLine();
        System.out.println("请输入商品名称所包含的字段:");
        name = input.nextLine();
        System.out.println("请输入商品分类");
        category = input.nextLine();
        System.out.println("现在输入要查询的价格区间");
        System.out.println("请输入您要查询的最低价格");
        min = input.nextLine();
        System.out.println("请输入您要查询的最高价格");
        max = input.nextLine();
        Sproduct sproduct = new Sproduct();
        sproduct.setId(id);
        sproduct.setName(name);
        sproduct.setCategory(category);
        sproduct.setMinPrice(min);
        sproduct.setMaxPrice(max);

        System.out.println("测试"+sproduct);

        ProductDao productDao = new ProductDao();
        List<Product> list = new ArrayList<>();
        list = productDao.searchProducts(sproduct);

        Iterator<Product> iterator = list.iterator();
        System.out.println("商品编号\t\t" + "商品名称\t\t" + "商品价格\t\t" + "商品分类\t\t" + "商品余量\t\t" + "商品描述\t\t");
        int count = 0;
        while(iterator.hasNext()){
            Product product = iterator.next();
            System.out.println(product.getId() +"\t\t\t" +product.getName()+"\t\t"+product.getPrice()+"\t\t"+product.getCategory()+"\t\t\t"+product.getPnum()+"\t\t\t"+product.getDescription());
        }

然后是dao层的操作 就是sql语句部分

其中使用C3P0数据库连接池 QueryRunner的其中一个query方法

可放三个参数 一个是sql语句 一个是BeanListHandler 一个是条件数组 对应问号的个数

BeanListHandler :返回所有的数据–将记录装入模型,将模型装入list

BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里

对于这些Handler啥的 看看这些博客 https://blog.csdn.net/weixin_38465623/article/details/80794976

有时间我也会总结

/*====================================================多条件模糊查询 sql拼接==================================================================*/
    //根据 多个条件 模糊查询
    public List<Product> searchProducts(Sproduct sproduct) throws SQLException {
        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());
        // 默认加一个初始条件 1 = 1 目的:为了拼接sql时解决出现的语法错误
        String sql = "select * from products where 1 = 1 ";//注意最后这个1后面有个空格

        //用来存储存在的查询条件   有几个问号,就要放几个值
        List<Object> list = new ArrayList<>();

        //记得去空格
        if(!"".equals(sproduct.getId().trim())){
            list.add("%" + sproduct.getId().trim()+"%");
            sql += "and id like ?";
        }
        if(!"".equals(sproduct.getName().trim())){
            list.add("%" + sproduct.getName().trim() + "%");
            sql += "and name like ?";
        }
        if(!"".equals(sproduct.getCategory().trim())){
            list.add("%" + sproduct.getCategory().trim() + "%");
            sql += "and category like ?";
        }
        if(!"".equals(sproduct.getMinPrice().trim())){
            list.add(Double.parseDouble(sproduct.getMinPrice().trim()));
            sql += "and price > ?";
        }
        if(!"".equals(sproduct.getMaxPrice().trim())){
            list.add(Double.parseDouble(sproduct.getMaxPrice().trim()));
            sql += "and price < ?";
        }

        //同时注意第三个参数接收的是数组 所以要将集合转化成数组      //<对应模型的类>(模型的字节码文件)
        return runner.query(sql, new BeanListHandler<Product>(Product.class), list.toArray());

    }

这样我输入名称 S 最低价格60 其他直接回车 出现结果 没问题

商品编号		商品名称		商品价格		商品分类		商品余量		商品描述		
7			JSP入门		80.8		前端			55			从入门到放弃

总的代码我之后在最后贴出来

第二个问题

2.分页问题

当时题目说的是 实现分页功能

商品显示(根据分页显示:一页3个商品要求显示第2页商品)

知道使用做sql查询时可以使用 limit a, b (从a开始获取b条数据) a从0开始

但是吧 我想复杂了 我就寻思了 怎么使用控制端实现分页呢 我查一下显示几条数据 然后再查一下 再显示下面几条数据 这不是使用web端才实现的事吗 一般是前台传参 说要几条数据 从哪里开始 所以啊 不要纠结了 稍微演示一下就行

后来看明白就是显示3条 然后再去查询一条sql语句 再显示3条即可 用控制端不用做的那么复杂

使用union相当于查询了两页 然后一起显示出来即可

(SELECT * FROM products LIMIT 0,3)
UNION
(SELECT * FROM products LIMIT 3,3)

java日门	10	后端	74	big.png	门
C++入门	17.8	编程	17	big.png	从入门到放弃
Html入门	100.8	编程	55	big.png	从入门到放弃
PHP入门	19.8	前端	55	big.png	从入门到放弃
C#入门	15.8	编程	55	big.png	从入门到放弃
CSS入门	50.8	前端	55	big.png	从入门到放弃

这样放在java代码执行即可

3.批处理问题

此次遇到的问题就是让根据name批量删除product结果 不会简单的方法

即batch

批处理问题 就是同时处理多条语句 但只能是同一种操作

处理多条删除操作
或者
处理多条添加操作
等等其他操作

这里用到了二维数组

//批量删除操作  批处理
    public int[] deleteProducts(String[] names) throws SQLException {
        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());
        String sql = "delete from products where name = ?";//sql语句没有变化
        //创建一个二维数组装 第一个[] 是序号 就是第几条操作 第二个[] 放条件 因为是数组 可以是·多个条件
        // 例如       params[i] = new Object[]{i+8,"bingbing"+i,"333"+i};
        
        Object[][] params = new Object[names.length][];  //大小就是要执行的语句的数量
        for(int i = 0; i < params.length; i++){
            params[i] = new Object[]{names[i]};

        }

        int[] nums = runner.batch(sql, params);  //batch的返回值是int类型的数组
        return nums;
    }



下面都是代码 这不是系统! 就是测试的代码 仅有java和mysql

bookStore书店系统测试

建表语句

-- 用户表
CREATE TABLE `user` (
  `id` INT(11) AUTO_INCREMENT,
  `username` VARCHAR(20) ,
  `PASSWORD` VARCHAR(20) ,
  `gender` VARCHAR(10) ,
  `email` VARCHAR(50) ,
  `telephone` VARCHAR(20) ,
  `introduce` VARCHAR(100),
  `role` VARCHAR(10) DEFAULT '普通用户',
  `registTime` TIMESTAMP ,
  PRIMARY KEY (`id`)
);
-- 商品表
CREATE TABLE `products` (
  `id` VARCHAR(100) ,
  `name` VARCHAR(40) ,
  `price` DOUBLE ,
  `category` VARCHAR(40) ,
  `pnum` INT(11) ,
  `imgurl` VARCHAR(100) ,
  `description` VARCHAR(255) ,
  PRIMARY KEY (`id`)
);
-- 订单表
CREATE TABLE `orders` (
  `id` VARCHAR(100) ,
  `money` DOUBLE ,
  `receiverAddress` VARCHAR(255) ,
  `receiverName` VARCHAR(20) ,
  `receiverPhone` VARCHAR(20) ,
  `paystate` INT(11) ,
  `ordertime` TIMESTAMP ,
  `user_id` INT(11) ,
  PRIMARY KEY (`id`),
  FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
);
-- 订单项表
CREATE TABLE `orderitem` (
  `order_id` VARCHAR(100) ,
  `product_id` VARCHAR(100),
  `buynum` INT(11) ,
  PRIMARY KEY (`order_id`,`product_id`),
  FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`),
  FOREIGN KEY (`product_id`) REFERENCES `products` (`id`)
);

实体类对应表创建即可
多条件模糊查询问题 分页问题 批处理问题 Java代码写MySQL遇到的_第1张图片
然后dao层操作
多条件模糊查询问题 分页问题 批处理问题 Java代码写MySQL遇到的_第2张图片

/**
 * 作者:Shishuai
 * 文件名:OrderDao
 * 时间:2019/8/16 15:55
 */

package com.qf.dao;

import com.qf.domain.Order;
import com.qf.domain.Product;
import com.qf.domain.User;
import com.qf.utils.C3P0Util;
import com.sun.org.apache.xpath.internal.operations.Or;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.List;

public class OrderDao {
    //添加订单
    public Boolean insert(Order order, User user) throws SQLException {

        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());

        String sql = "insert into orders(id, money, receiverAddress, receiverName, receiverPhone, paystate, user_id) values (?,?,?,?,?,?,?)";

        int num = runner.update(sql, new Object[] {order.getId(), order.getMoney(), order.getReceiverAddress(),
        order.getReceiverName(), order.getReceiverPhone(), order.getPaystate(), user.getId()});
        if(num > 0)
            return true;
        return false;
    }

    //根据用户名查询订单
    public List<Order> find(int id) throws SQLException{

        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());
        String sql = "select * from orders where user_id = ?";
        List list = (List) runner.query(sql, new BeanListHandler(Order.class),new Object[] { id });
        return list;
    }

    //删除操作
    public Boolean delete(String id) throws SQLException {

        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());

        String sql = "delete from orders where id = ?";

        int num = runner.update(sql, id);
        if(num > 0)
            return true;
        return false;
    }
}

/**
 * 作者:Shishuai
 * 文件名:OrderItemDao
 * 时间:2019/8/16 15:59
 */

package com.qf.dao;

import com.qf.domain.Order;
import com.qf.domain.OrderItem;
import com.qf.domain.Product;
import com.qf.domain.User;
import com.qf.utils.C3P0Util;
import org.apache.commons.dbutils.QueryRunner;

import java.sql.SQLException;

public class OrderItemDao {


    //添加订单清单
    public Boolean insert(OrderItem orderItem ) throws SQLException {

        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());

        String sql = "insert into orderitem(order_id, product_id, buynum) values (?,?,?)";

        int num = runner.update(sql, new Object[] {orderItem.getOrder().getId(), orderItem.getP().getId(), orderItem.getBuynum()});
        if(num > 0)
            return true;
        return false;
    }
    //删除操作
    public Boolean delete(String id) throws SQLException {

        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());

        String sql = "delete from orderitem where order_id = ?";

        int num = runner.update(sql, id);
        if(num > 0)
            return true;
        return false;
    }
}

/**
 * 作者:Shishuai
 * 文件名:ProductDao
 * 时间:2019/8/16 14:51
 */

package com.qf.dao;

import com.qf.domain.Product;
import com.qf.domain.Sproduct;
import com.qf.utils.C3P0Util;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class ProductDao {
    //添加书籍
    public Boolean insert(Product product) throws SQLException {

		QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());

		String sql = "insert into products(id, name, price, category, pnum, description) values (?,?,?,?,?,?)";

		int num = runner.update(sql, new Object[] {product.getId(), product.getName(), product.getPrice(), product.getCategory(), product.getPnum(), product.getDescription() });
		if(num > 0)
			return true;
		return false;
	}

    //根据id修改书籍信息
    public Boolean update(Product product) throws SQLException {
        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());

        String sql = "update products set name = ?, price = ?, category = ?, pnum =  ?, description = ? where id = ?";

        int num = runner.update(sql, new Object[] { product.getName(), product.getPrice(), product.getCategory(), product.getPnum(), product.getDescription(), product.getId() });
        if(num > 0)
            return true;
        return false;
    }
    //根据id修改库存
    public Boolean updatePnum(Product product) throws SQLException {
        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());

        String sql = "update products set pnum =  ? where id = ?";

        int num = runner.update(sql, new Object[] { product.getPnum(), product.getId() });
        if(num > 0)
            return true;
        return false;
    }
    /*====================================================多条件模糊查询 sql拼接==================================================================*/
    //根据 多个条件 模糊查询
    public List<Product> searchProducts(Sproduct sproduct) throws SQLException {
        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());
        // 默认加一个初始条件 1 = 1 目的:为了拼接sql时解决出现的语法错误
        String sql = "select * from products where 1 = 1 ";//注意最后这个1后面有个空格

        //用来存储存在的查询条件   有几个问号,就要放几个值
        List<Object> list = new ArrayList<>();

        //记得去空格
        if(!"".equals(sproduct.getId().trim())){
            list.add("%" + sproduct.getId().trim()+"%");
            sql += "and id like ?";
        }
        if(!"".equals(sproduct.getName().trim())){
            list.add("%" + sproduct.getName().trim() + "%");
            sql += "and name like ?";
        }
        if(!"".equals(sproduct.getCategory().trim())){
            list.add("%" + sproduct.getCategory().trim() + "%");
            sql += "and category like ?";
        }
        if(!"".equals(sproduct.getMinPrice().trim())){
            list.add(Double.parseDouble(sproduct.getMinPrice().trim()));
            sql += "and price > ?";
        }
        if(!"".equals(sproduct.getMaxPrice().trim())){
            list.add(Double.parseDouble(sproduct.getMaxPrice().trim()));
            sql += "and price < ?";
        }

        //同时注意第三个参数接收的是数组 所以要将集合转化成数组
        return runner.query(sql, new BeanListHandler<Product>(Product.class), list.toArray());

    }
    //根据 名称 查询
    public Boolean selectProduct1(Product product) throws SQLException {
        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());

        String sql = "select * from  products where where name = ?";

        int num = runner.update(sql, new Object[] { product.getName()});
        if(num > 0)
            return true;
        return false;
    }
    //根据 id查询
    public Boolean selectProduct2(Product product) throws SQLException {
        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());

        String sql = "select * from  products where where id = ?";

        int num = runner.update(sql, new Object[] { product.getId()});
        if(num > 0)
            return true;
        return false;
    }
    //显示所有书籍
    public List FindAll() throws SQLException{

        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());

        String sql = "select * from products";

        List list = (List) runner.query(sql, new BeanListHandler(Product.class));
        return list;
    }

    //删除操作
    public Boolean delete(String name) throws SQLException {

        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());

        String sql = "delete from products where name = ?";

        int num = runner.update(sql, name);
        if(num > 0)
            return true;
        return false;
    }
    //批量删除操作  批处理
    public int[] deleteProducts(String[] names) throws SQLException {
        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());
        String sql = "delete from products where name = ?";//sql语句没有变化
        //创建一个二维数组装 第一个[] 是序号 就是第几条操作 第二个[] 放条件 因为是数组 可以是·多个条件
        // 例如       params[i] = new Object[]{i+8,"bingbing"+i,"333"+i};
        Object[][] params = new Object[names.length][];  //大小就是要执行的语句的数量
        for(int i = 0; i < params.length; i++){
            params[i] = new Object[]{names[i]};

        }

        int[] nums = runner.batch(sql, params);  //batch的返回值是int类型的数组
        return nums;
    }

}

/**
 * 作者:Shishuai
 * 文件名:UserDao
 * 时间:2019/8/16 14:29
 */

package com.qf.dao;

import com.qf.domain.User;
import com.qf.utils.C3P0Util;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import java.sql.SQLException;

public class UserDao {

    //注册操作
    public Boolean insert(User user) throws SQLException {

        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());
        String sql = "insert into user(username, password, gender, email, telephone, introduce) values (?,?,?,?,?,?)";
        int num = runner.update(sql, new Object[] {user.getUsername(), user.getPassword(), user.getGender(), user.getEmail(), user.getTelephone(), user.getIntroduce()});
        if(num > 0)
            return true;
        return false;
    }
    //登录操作
    public User login(String name) throws SQLException{
        QueryRunner runner = new QueryRunner(C3P0Util.getDataSource());
        String sql = "select * from user where username = ?";
        //调用方法
        User user = (User) runner.query(sql, new BeanHandler(User.class), new Object[] { name });
//        User user = (User) runner.query(sql, new BeanHandler(User.class), 1);
        System.out.println("测试:   " + user);
        return user;
    }

}

多条件模糊查询问题 分页问题 批处理问题 Java代码写MySQL遇到的_第3张图片

/**
 * 作者:Shishuai
 * 文件名:C3P0Util
 * 时间:2019/8/13 21:25
 */

package com.qf.utils;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/*
 * 注意事项:
 * 1.系统会自动读取c3p0-config.xml文件:a.文件的名字要固定-c3p0-config.xml   b.文件的位置也是固定的--src下面
 * 2.一般会自己创建xml配置文件,按照要求创建即可.
 * 3.优势:又有不需要自己关联配置文件,所以使用更方便
 */
public class C3P0Util {
    private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
    public static Connection getConnection() throws SQLException {
        return  dataSource.getConnection();
    }
    public static ComboPooledDataSource getDataSource(){
        return dataSource;
    }
    public static void release(Connection conn, PreparedStatement statement, ResultSet set){
        if(conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(statement != null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(set != null){
            try {
                set.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }


}



<c3p0-config>
  <default-config>
  	<property name="driverClass">com.mysql.jdbc.Driverproperty>
  	<property name="jdbcUrl">jdbc:mysql://localhost:3306/bookstoreproperty>
  	<property name="user">rootproperty>
  	<property name="password">rootproperty>
    <property name="automaticTestTable">con_testproperty>
    <property name="checkoutTimeout">30000property>
    <property name="idleConnectionTestPeriod">30property>
    <property name="initialPoolSize">10property>
    <property name="maxIdleTime">30property>
    <property name="maxPoolSize">100property>
    <property name="minPoolSize">10property>
    <property name="maxStatements">200property>

    <user-overrides user="test-user">
      <property name="maxPoolSize">10property>
      <property name="minPoolSize">1property>
      <property name="maxStatements">0property>
    user-overrides>

  default-config>

  
  <named-config name="intergalactoApp"> 
    <property name="acquireIncrement">50property>
    <property name="initialPoolSize">100property>
    <property name="minPoolSize">50property>
    <property name="maxPoolSize">1000property>

    
    <property name="maxStatements">0property> 
    <property name="maxStatementsPerConnection">5property>

    
    <user-overrides user="master-of-the-universe"> 
      <property name="acquireIncrement">1property>
      <property name="initialPoolSize">1property>
      <property name="minPoolSize">1property>
      <property name="maxPoolSize">5property>
      <property name="maxStatementsPerConnection">50property>
    user-overrides>
  named-config>
c3p0-config>

测试类
多条件模糊查询问题 分页问题 批处理问题 Java代码写MySQL遇到的_第4张图片

/**
 * 作者:Shishuai
 * 文件名:LoginTest
 * 时间:2019/8/16 14:40
 */

package com.qf.test;

import com.qf.dao.UserDao;
import com.qf.domain.User;
import com.sun.org.apache.xerces.internal.impl.xs.SchemaNamespaceSupport;

import java.sql.SQLException;
import java.util.Scanner;

public class LoginTest {
    public static void main(String[] args) throws InterruptedException, SQLException {
        Scanner input = new Scanner(System.in);
        String name = null;
        String password = null;
        System.out.println("欢迎来到登录界面");
        System.out.println("请输入用户名");
        name = input.nextLine();
        System.out.println("请输入密码");
        password = input.nextLine();
//        User user = new User(name, password);
        UserDao userDao = new UserDao();
        User user = userDao.login(name);
        System.out.println("-----------------");
        System.out.println("正在登录请稍后");
        Thread.sleep(2000);
        System.out.println("-----------------");
        if(user == null){
            System.out.println("没有此用户");
        }else if(password.equals(user.getPassword())){
            System.out.println("登录成功");
        }else{
            System.out.println("密码错误, 登录失败");
        }
    }
    public void TestLogin() throws InterruptedException, SQLException {
        Scanner input = new Scanner(System.in);
        String name = null;
        String password = null;
        System.out.println("欢迎来到登录界面");
        System.out.println("请输入用户名");
        name = input.nextLine();
        System.out.println("请输入密码");
        password = input.nextLine();
//        User user = new User(name, password);
        UserDao userDao = new UserDao();
        User user = userDao.login(name);
        System.out.println("-----------------");
        System.out.println("正在登录请稍后");
        Thread.sleep(2000);
        System.out.println("-----------------");
        if(user == null){
            System.out.println("没有此用户");
        }else if(password.equals(user.getPassword())){
            System.out.println("登录成功");
        }else{
            System.out.println("密码错误, 登录失败");
        }
    }
}

/**
 * 作者:Shishuai
 * 文件名:RegisterTest
 * 时间:2019/8/16 14:21
 */

package com.qf.test;

import com.qf.dao.UserDao;
import com.qf.domain.User;
import com.sun.xml.internal.stream.Entity;

import javax.sound.midi.Soundbank;
import java.sql.SQLException;
import java.text.DateFormat;
import java.util.Date;
import java.util.Scanner;

public class RegisterTest {
    public static void main(String[] args) throws InterruptedException, SQLException {

//        Scanner input = new Scanner(System.in);
        String name = "shishuai";
        String password = "123456";
        String email = "[email protected]";
        String telephone = "17853312684";
        String sex = "男";
        String introduce = "24期严选";
//        String date = "2019-08-16";
        //实现用户注册
        System.out.println("欢迎注册网上书店:");
        System.out.println("请输入您的用户姓名");
        System.out.println("我的用户名是:"+name);
        System.out.println("请输入您的用户密码");
        System.out.println("我的密码是:"+password);
//        System.out.println("请再次输入您的用户密码");
        System.out.println("请输入您的性别");
        System.out.println("我的性别是:"+sex);
        System.out.println("请输入您的用户邮箱");
        System.out.println("我的邮箱是:"+email);
        System.out.println("请输入您的用户联系电话");
        System.out.println("我的联系电话是:"+telephone);
        System.out.println("请输入您的用户介绍");
        System.out.println("我的用户介绍是:"+introduce);
        System.out.println("-------------------------");
        System.out.println("正在注册,请稍后");

        User user = new User(name, password, sex, email, telephone, introduce);
        UserDao userDao = new UserDao();
        boolean res = userDao.insert(user);
        Thread.sleep(2000);
        System.out.println("-------------------------");
        if(res){
            System.out.println("注册成功");
        }else {
            System.out.println("注册失败");
        }


    }
}

/**
 * 作者:Shishuai
 * 文件名:AddProduct
 * 时间:2019/8/16 14:50
 */

package com.qf.test;

import com.qf.dao.ProductDao;
import com.qf.domain.Product;

import java.sql.SQLException;
import java.util.Scanner;

public class AddProduct {
    public static void main(String[] args) throws InterruptedException, SQLException {
        System.out.println("欢迎来到商品添加页面");
        System.out.println("-----------------------");
        Scanner input = new Scanner(System.in);

        String id = null;
        String name = null; // 名称
        double price = 0; // 价格
        String category = null; // 分类
        int pnum = 0; // 数量
//        String img_url = ""; // 图片路径
        String description = null; // 描述
        System.out.println("请输入商品编号");
        id = input.nextLine();
        System.out.println("请输入商品名称");
        name = input.nextLine();
        System.out.println("请输入商品价格");
        price = input.nextDouble();
        String a = input.nextLine();
        System.out.println("请输入商品分类");
        category= input.nextLine();
        System.out.println("请输入商品数量");
        pnum = input.nextInt();
        a = input.nextLine();
        System.out.println("请输入商品描述");
        description = input.nextLine();

        Product product = new Product(id,name,price,category,pnum,description);
        ProductDao productDao = new ProductDao();
        boolean res = productDao.insert(product);
        System.out.println("-----------------");
        System.out.println("正在添加请稍后");
        Thread.sleep(2000);
        System.out.println("-------------------------");
        if(res){
            System.out.println("添加成功");
        }else {
            System.out.println("添加失败");
        }
    }
}

/**
 * 作者:Shishuai
 * 文件名:AlterProduct
 * 时间:2019/8/16 15:21
 */

package com.qf.test;

import com.qf.dao.ProductDao;
import com.qf.domain.Product;

import java.sql.SQLException;
import java.util.Scanner;

public class AlterProduct {
    public static void main(String[] args) throws InterruptedException, SQLException {
        System.out.println("------------------");
        System.out.println("欢迎来到商品修改页面");
        System.out.println("----------------------");
        Scanner input = new Scanner(System.in);

        String id = null;
        String name = null; // 名称
        double price = 0; // 价格
        String category = null; // 分类
        int pnum = 0; // 数量
        String description = null; // 描述
        System.out.println("请输入要修改的商品编号");
        id = input.nextLine();
        System.out.println("请输入要修改的商品名称");
        name = input.nextLine();
        System.out.println("请输入要修改的商品价格");
        price = input.nextDouble();
        String a = input.nextLine();
        System.out.println("请输入要修改的商品分类");
        category= input.nextLine();
        System.out.println("请输入要修改的商品数量");
        pnum = input.nextInt();
        a = input.nextLine();
        System.out.println("请输入商品描述");
        description = input.nextLine();

        Product product = new Product(id,name,price,category,pnum,description);
        ProductDao productDao = new ProductDao();
        boolean res = productDao.update(product);
        System.out.println("-----------------");
        System.out.println("正在修改请稍后");
        Thread.sleep(2000);
        System.out.println("-------------------------");
        if(res){
            System.out.println("修改成功");
        }else {
            System.out.println("修改失败");
        }

    }
}

/**
 * 作者:Shishuai
 * 文件名:CreateOrder
 * 时间:2019/8/16 15:33
 */

package com.qf.test;

import com.qf.dao.OrderDao;
import com.qf.dao.OrderItemDao;
import com.qf.dao.ProductDao;
import com.qf.dao.UserDao;
import com.qf.domain.Order;
import com.qf.domain.OrderItem;
import com.qf.domain.Product;
import com.qf.domain.User;

import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class CreateOrder {
    public static void main(String[] args) throws SQLException, InterruptedException {
        System.out.println("请先登录----------------");
        Scanner input = new Scanner(System.in);
        String name = null;
        String password = null;
        System.out.println("欢迎来到登录界面");
        System.out.println("请输入用户名");
        name = input.nextLine();
        System.out.println("请输入密码");
        password = input.nextLine();
//        User user = new User(name, password);
        UserDao userDao = new UserDao();
        User user = userDao.login(name);
        System.out.println("-----------------");
        System.out.println("正在登录请稍后");
        Thread.sleep(2000);
        System.out.println("-----------------");
        boolean flag = false;
        if(user == null){
            System.out.println("没有此用户");
        }else if(password.equals(user.getPassword())){
            System.out.println("登录成功");
            flag = true;
        }else{
            System.out.println("密码错误, 登录失败");
        }

        if(flag){
            System.out.println("----------------------");
            ProductDao productDao = new ProductDao();
            List<Product> list = productDao.FindAll();
            Iterator<Product> iterator = list.iterator();
            System.out.println("商品编号\t\t" + "商品名称\t\t" + "商品价格\t\t" + "商品分类\t\t" + "商品余量\t\t" + "商品描述\t\t");
            while(iterator.hasNext()){
                Product product = iterator.next();
                System.out.println(product.getId() +"\t\t\t" +product.getName()+"\t\t"+product.getPrice()+"\t\t"+product.getCategory()+"\t\t\t"+product.getPnum()+"\t\t\t"+product.getDescription());
            }

            System.out.println("----------------------");
            System.out.println("请输入要购买的商品编号");
            String pid = input.nextLine();
            System.out.println("请输入要购买的商品数量");
            int pnum = input.nextInt();
            String a = input.nextLine();
            int buynum = pnum;
            Iterator<Product> iterator1 = list.iterator();
            double zong = 0;
            Product p = new Product();
            while(iterator1.hasNext()){
                Product product = iterator1.next();
                if(product.getId().equals(pid)){
                    p = product;
                    zong = product.getPrice() * pnum;
                    pnum = product.getPnum() - pnum;

                }
            }
            System.out.println("确定购买?y or n");
            String ok = input.nextLine();
            if(ok.equals("y")) {

                System.out.println("您已支付成功");
                System.out.println("删除库存");
                Product product = new Product(pid, pnum);
                ProductDao productDao1 = new ProductDao();
                productDao1.updatePnum(product);

                System.out.println("生成订单-----------------------");

                Order order = new Order();
                Random r = new Random();
                int r1 = r.nextInt(1000) + 1;
                order.setId(String.valueOf(r1));
                order.setMoney(zong);
                order.setReceiverAddress("青岛");
                order.setReceiverName(user.getUsername());
                order.setReceiverPhone(user.getTelephone());
                order.setPaystate(1);//已支付

                OrderDao orderDao = new OrderDao();
                orderDao.insert(order, user);

                System.out.println("生成订单项---------------------------");
                OrderItem orderItem = new OrderItem(order, p, buynum);
                OrderItemDao orderItemDao = new OrderItemDao();
                orderItemDao.insert(orderItem);

            }else{
                System.out.println("不买了昂");
            }
        }
    }
}

/**
 * 作者:Shishuai
 * 文件名:DeleteOrder
 * 时间:2019/8/16 16:23
 */

package com.qf.test;

import com.qf.dao.OrderDao;
import com.qf.dao.OrderItemDao;
import com.qf.dao.ProductDao;

import java.sql.SQLException;
import java.util.Scanner;

public class DeleteOrder {
    public static void main(String[] args) throws SQLException, InterruptedException {
        System.out.println("------------------");
        System.out.println("欢迎来到订单删除页面");
        System.out.println("----------------------");
        Scanner input = new Scanner(System.in);


        String id = null; // 编号


        System.out.println("请输入要删除的订单编号");
        id = input.nextLine();
        OrderItemDao orderItemDao = new OrderItemDao();
        boolean res1 = orderItemDao.delete(id);
        OrderDao orderDao = new OrderDao();
        boolean res = orderDao.delete(id);
        System.out.println("-----------------");
        System.out.println("正在删除请稍后");
        Thread.sleep(2000);
        System.out.println("-------------------------");
        if(res && res1){
            System.out.println("删除成功");
        }else {
            System.out.println("删除失败,有错误发生");
        }
    }
}

/**
 * 作者:Shishuai
 * 文件名:deleteProduct
 * 时间:2019/8/16 15:30
 */

package com.qf.test;

import com.qf.dao.ProductDao;
import com.qf.domain.Product;

import java.sql.SQLException;
import java.util.Scanner;

public class deleteProduct {
    public static void main(String[] args) throws InterruptedException, SQLException {
        System.out.println("------------------");
        System.out.println("欢迎来到商品删除页面");
        System.out.println("----------------------");
        Scanner input = new Scanner(System.in);


        String name = null; // 名称


        System.out.println("请输入要删除的商品名称");
        name = input.nextLine();


        ProductDao productDao = new ProductDao();
        boolean res = productDao.delete(name);
        System.out.println("-----------------");
        System.out.println("正在删除请稍后");
        Thread.sleep(2000);
        System.out.println("-------------------------");
        if(res){
            System.out.println("删除成功");
        }else {
            System.out.println("删除失败,商品不存在");
        }
//        ShowProduct.main();
    }
}

/**
 * 作者:Shishuai
 * 文件名:SelectProduct
 * 时间:2019/8/16 16:34
 */

package com.qf.test;

import com.qf.dao.ProductDao;
import com.qf.domain.Product;
import com.qf.domain.Sproduct;
import com.sun.prism.shader.Solid_TextureYV12_AlphaTest_Loader;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class SelectProduct {
    public static void main(String[] args) throws SQLException {
        System.out.println("欢迎来到商品模糊查询页面,下面输入条件,不想输入回车即可");
        System.out.println("----------------------");
        String id = "";
        String name = "";
        String category = "";
        String min = "";
        String max = "";
        Scanner input = new Scanner(System.in);
        System.out.println("请输入要查询的商品id:");
        id = input.nextLine();
        System.out.println("请输入商品名称所包含的字段:");
        name = input.nextLine();
        System.out.println("请输入商品分类");
        category = input.nextLine();
        System.out.println("现在输入要查询的价格区间");
        System.out.println("请输入您要查询的最低价格");
        min = input.nextLine();
        System.out.println("请输入您要查询的最高价格");
        max = input.nextLine();
        Sproduct sproduct = new Sproduct();
        sproduct.setId(id);
        sproduct.setName(name);
        sproduct.setCategory(category);
        sproduct.setMinPrice(min);
        sproduct.setMaxPrice(max);

        System.out.println("测试"+sproduct);

        ProductDao productDao = new ProductDao();
        List<Product> list = new ArrayList<>();
        list = productDao.searchProducts(sproduct);

        Iterator<Product> iterator = list.iterator();
        System.out.println("商品编号\t\t" + "商品名称\t\t" + "商品价格\t\t" + "商品分类\t\t" + "商品余量\t\t" + "商品描述\t\t");
        int count = 0;
        while(iterator.hasNext()){
            Product product = iterator.next();
            System.out.println(product.getId() +"\t\t\t" +product.getName()+"\t\t"+product.getPrice()+"\t\t"+product.getCategory()+"\t\t\t"+product.getPnum()+"\t\t\t"+product.getDescription());
        }


    }
}

/**
 * 作者:Shishuai
 * 文件名:ShowOrder
 * 时间:2019/8/16 16:13
 */

package com.qf.test;

import com.qf.dao.OrderDao;
import com.qf.dao.UserDao;
import com.qf.domain.Order;
import com.qf.domain.Product;
import com.qf.domain.User;

import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class ShowOrder {
    public static void main(String[] args) throws SQLException, InterruptedException {
        System.out.println("请先登录----------------");
        Scanner input = new Scanner(System.in);
        String name = null;
        String password = null;
        System.out.println("欢迎来到登录界面");
        System.out.println("请输入用户名");
        name = input.nextLine();
        System.out.println("请输入密码");
        password = input.nextLine();
//        User user = new User(name, password);
        UserDao userDao = new UserDao();
        User user = userDao.login(name);
        System.out.println("-----------------");
        System.out.println("正在登录请稍后");
        Thread.sleep(2000);
        System.out.println("-----------------");
        boolean flag = false;
        if(user == null){
            System.out.println("没有此用户");
        }else if(password.equals(user.getPassword())){
            System.out.println("登录成功");
            flag = true;
        }else{
            System.out.println("密码错误, 登录失败");
        }

        if(flag){
            OrderDao orderDao = new OrderDao();
            List<Order> list = orderDao.find(user.getId());
            Iterator<Order> iterator = list.iterator();
            System.out.println("订单编号\t\t" + "订单总价\t\t" + "收货人姓名\t\t" + "收货人电话\t\t" + "支付状态\t\t" + "订单时间\t\t");
            while(iterator.hasNext()){
//            System.out.println(iterator.next());
                Order order = iterator.next();
                System.out.println(order.getId() +"\t\t" +order.getMoney()+"\t\t"+order.getReceiverName()+"\t\t"+order.getReceiverPhone()+"\t\t\t"+order.getPaystate()+"\t\t"+order.getOrdertime());
            }

        }
    }
}

/**
 * 作者:Shishuai
 * 文件名:ShowProduct
 * 时间:2019/8/16 15:08
 */

package com.qf.test;

import com.qf.dao.ProductDao;
import com.qf.domain.Product;
import com.sun.org.apache.xpath.internal.SourceTree;
import sun.java2d.SurfaceDataProxy;

import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;

public class ShowProduct {
    public static void main(String[] args) throws SQLException {
        System.out.println("欢迎来到商品展示页面");
        System.out.println("----------------------");
        ProductDao productDao = new ProductDao();
        List<Product> list = productDao.FindAll();
        Iterator<Product> iterator = list.iterator();
        System.out.println("商品编号\t\t" + "商品名称\t\t" + "商品价格\t\t" + "商品分类\t\t" + "商品余量\t\t" + "商品描述\t\t");
        int count = 0;
        while(iterator.hasNext()){
//            System.out.println(iterator.next());
            Product product = iterator.next();
            System.out.println(product.getId() +"\t\t\t" +product.getName()+"\t\t"+product.getPrice()+"\t\t"+product.getCategory()+"\t\t\t"+product.getPnum()+"\t\t\t"+product.getDescription());
            count++;
            if(count%3==0){
                System.out.println();
                System.out.println();
            }
        }
    }
}

你可能感兴趣的:(mysql,模糊查询like,%,分页limit,批处理batch)