这个周五找了个小题目,就是mysql的东西
做一个bookStore书店系统 时间问题 就没写页面 用控制台输出
在做的过程中重温了以前的东西
但也遇到了不会的,现在总结一下
结尾给出建表代码
有
产品信息表Products
用户表User
订单表Orders
订单项表OrderItem
单条件使用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拼接
直接贴代码吧 将三个变量初始化为空值 不是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 从入门到放弃
总的代码我之后在最后贴出来
第二个问题
当时题目说的是 实现分页功能
商品显示(根据分页显示:一页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代码执行即可
此次遇到的问题就是让根据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;
}
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`)
);
/**
* 作者: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;
}
}
/**
* 作者: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>
/**
* 作者: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();
}
}
}
}