商城项目之jdk8+jdbc+mariadb
来源:互联网 发布:python图形化界面开发 编辑:程序博客网 时间:2024/05/16 18:52
jdk8+jdbc连接数据库
目录
前言 什么是JDBC
维基百科的简介:
Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。它JDBC是面向关系型数据库的。
简单地说,就是用于执行SQL语句的一类Java API,通过JDBC使得我们可以直接使用Java编程来对关系数据库进行操作。通过封装,可以使开发人员使用纯Java API完成SQL的执行。
(一)准备工作
1.创建数据库
DROP TABLE IF EXISTS `t_goods`;CREATE TABLE `t_goods` ( `id` bigint(20) NOT NULL COMMENT '主键', `name` varchar(20) NOT NULL DEFAULT '' COMMENT '商品名称', `price` double(10,0) DEFAULT NULL COMMENT '价钱', `number` int(11) DEFAULT NULL COMMENT '数量', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;DROP TABLE IF EXISTS `t_r_goods_salesperson`;CREATE TABLE `t_r_goods_salesperson` ( `id` bigint(20) NOT NULL COMMENT '主键', `goods_id` bigint(20) NOT NULL COMMENT '商品表外键', `salesperosn_id` bigint(20) NOT NULL COMMENT '销售员外键', `number` int(10) NOT NULL COMMENT '销售量', `sales_time` datetime NOT NULL COMMENT '商品卖出时间', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;DROP TABLE IF EXISTS `t_salesperson`;CREATE TABLE `t_salesperson` ( `id` bigint(20) NOT NULL COMMENT '主键', `name` varchar(4) DEFAULT NULL COMMENT '销售员姓名', `password` varchar(30) DEFAULT NULL COMMENT '销售员密码', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.导包
![enter description here][1]
3.实体
public class Goods { private Integer id ; private String name ; private Double price ; private Integer number ; ....省略构造器,setter,getter}public class GoodsSalesperson { private Integer id ; private Integer goodsId ; private Integer salespersonId ; private Integer number ; private Date salesTime ; .... 省略构造器,setter,getter}public class Salesperson { private Integer id ; private String name ; private String password ; .... 省略构造器,setter,getter}
4.建立连接
public class DBUtils { public static Connection getConnetction() { Connection conn = null; String user = "root"; String passwd = "htbuy@2016"; String url = "jdbc:mariadb://192.168.6.101:3306/test_shopping"; try { //Class.forName("oracle.jdbc.driver.OracleDriver"); Class.forName("org.mariadb.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { conn = DriverManager.getConnection(url,user,passwd); } catch (SQLException e) { e.printStackTrace(); } return conn; } public static void closeResource(PreparedStatement pstmt, Connection conn) { try { if (pstmt != null) { pstmt.close(); } } catch (SQLException e1) { e1.printStackTrace(); } try { if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } public static void closeResource(PreparedStatement pstmt, ResultSet rs, Connection conn) { try { if (pstmt != null) { pstmt.close(); } } catch (SQLException e1) { e1.printStackTrace(); } try { if (rs != null ) { rs.close(); } } catch (SQLException e1) { e1.printStackTrace(); } try { if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } }}
5.insert
/** * @description <p>添加商品到数据库t_goods表</p> * @author heshiyuan * @date 2017/7/20 11:39 * @param goods 商品对象 */ public boolean addGoods(Goods goods) { boolean bool = false; conn = DBUtils.getConnetction(); String sql = "INSERT INTO t_GOODS(id,NAME,PRICE,number) VALUES(?,?,?,?)"; try { pstmt = conn.prepareStatement(sql); pstmt.setInt(1, goods.getId()); pstmt.setString(2, goods.getName()); pstmt.setDouble(3, goods.getPrice()); pstmt.setInt(4, goods.getNumber()); int rs = pstmt.executeUpdate(); if (rs > 0) { bool = true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtils.closeResource(pstmt, conn); } return bool; }
6.update
/** @description <p>更改商品信息到数据库t_goods表</p> * @author heshiyuan * @param key 选择要更改商品信息 * @param goods 商品对象 * @date 2017/7/20 11:39 */ public boolean updateGoods(int key, Goods goods) { boolean bool = false; conn = DBUtils.getConnetction(); switch (key) { case 1: // key=1,更改商品名称 String sqlName = "UPDATE t_goods SET NAME=? WHERE ID=?"; try { pstmt = conn.prepareStatement(sqlName); pstmt.setString(1, goods.getName()); pstmt.setLong(2, goods.getId()); int rs = pstmt.executeUpdate(); if (rs > 0) { bool = true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtils.closeResource(pstmt, conn); } break; case 2: // key=2,更改商品价格 String sqlPrice = "UPDATE t_goods SET PRICE=? WHERE ID=?"; try { conn = DBUtils.getConnetction(); pstmt = conn.prepareStatement(sqlPrice); pstmt.setDouble(1, goods.getPrice()); pstmt.setLong(2, goods.getId()); int rs = pstmt.executeUpdate(); if (rs > 0) { bool = true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtils.closeResource(pstmt, conn); } break; case 3: // key=3,更改商品数量 String sqlNum = "UPDATE t_goods SET number=? WHERE ID=?"; try { conn = DBUtils.getConnetction(); pstmt = conn.prepareStatement(sqlNum); pstmt.setInt(1, goods.getNumber()); pstmt.setLong(2, goods.getId()); int rs = pstmt.executeUpdate(); if (rs > 0) { bool = true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtils.closeResource(pstmt, conn); } break; default: break; } return bool; }
7.select
public List<Map<String,Object>> dailyGsales() { List<Map<String,Object>> returnMapList = new ArrayList<>(); conn = DBUtils.getConnetction(); String sql = "SELECT" + " gs.sales_time as salesTime," + " gs.id as id," + " g.`name` as goodsName," + " s.`name` as salesName," + " g.price as price," + " gs.number as count," + " g.price * g.number as total" + " FROM" + " t_r_goods_salesperson gs left join t_salesperson s on gs.salesperosn_id = s.id" + " left join t_goods g on gs.goods_id = g.id" + ";"; try { pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while (rs.next()) { Map<String,Object> returnMap = new HashMap<>() ; returnMap.put("saleTime",rs.getTimestamp(1)); returnMap.put("id",rs.getInt(2)); returnMap.put("goodsName",rs.getString(3)); returnMap.put("salesName",rs.getString(4)); returnMap.put("price",rs.getDouble(5)); returnMap.put("count",rs.getInt(6)); returnMap.put("total",rs.getDouble(7)); returnMapList.add(returnMap) ; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtils.closeResource(pstmt, rs, conn); } return returnMapList; }
8.delete
/** * @description <p>从数据库goods表中-刪除商品</p> * @author heshiyuan * @date 2017/7/20 11:38 */ public boolean deleteGoods(int id) { boolean bool = false; String sql = "DELETE FROM t_GOODS WHERE ID=?"; try { conn = DBUtils.getConnetction(); pstmt = conn.prepareStatement(sql); pstmt.setLong(1,id); int rs = pstmt.executeUpdate(); if (rs > 0) { bool = true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtils.closeResource(pstmt, conn); } return bool; }
(二)项目演示
1.商城主页面
2.商品列表
3.售出列表
(三)篇后感
目前的项目功能并不丰富,简单的jdbc增删改查,此项目会继续维护,
项目源码托管在GitHub:https://github.com/shiyuan2he/framework.git
后续会增加jdbc增删改查的封装(思路是java 反射),添加jdbc事务支持,aop切面拦截
持续更新中,敬请期待
阅读全文
1 0
- 商城项目之jdk8+jdbc+mariadb
- 黑马商城项目(三)之二
- jdbc连接mariadb
- JDBC连接Mariadb
- MySql分支项目MariaDB 之开眼看世界
- 【Mycat 体验】CentOS 7 Samba JDK8 Mycat MariaDB
- ASP.Net 实战项目 之 《图书商城》 第一天
- ASP.Net 实战项目 之 《图书商城》 第二天
- ASP.Net 实战项目 之 《图书商城》 第三天
- ASP.Net 实战项目 之 《图书商城》 第四天
- ASP.Net 实战项目 之 《图书商城》 第五天
- ASP.Net 实战项目 之 《图书商城》 第六天
- ASP.Net 实战项目 之 《图书商城》 第七、八天
- Unity3D学习之(游戏商城项目解析)
- SSM项目之---淘淘商城(第一天)
- SSM项目之---淘淘商城(第二天)
- SSM项目之---淘淘商城(第三天)
- 商城项目实战09:SSM框架整合之逆向工程
- Java常用基础类之Date、Calendar、SimleDateFormat
- 从码云拉项目的方法
- Python3学习(10)--列表生成器(List generator)
- 问题 : 小丑排序
- L
- 商城项目之jdk8+jdbc+mariadb
- java登录拦截器
- Mysql中group_concat的使用
- KEILC51编译问题ERROR L104: MULTIPLE PUBLIC DEFINITIONS重复定义
- malloc大战new
- Makefile 使用总结
- 修改android 默认横竖屏
- vs2010旗舰版产品密钥
- html5的input类型和所有属性详解