-- 物理删除与逻辑删除 -- 1.物理删除执行delete语句,逻辑删除执行UPDATE 语句 --? -- 无限分类的表结构设计 -- id name parent_id level? -- DDL建表语句 -- 阿里巴巴开发手册中的建议 CREATE TABLE IF NOT EXISTS 表名 ( ?? ?id INT UNSIGNED PRIMARY KEY auto_increment COMMENT '主键ID', ?? ?is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0未1已)', ?? ?create_date datetime NOT NULL DEFAULT NOW() COMMENT '创建日期', ?? ?modify_date datetime COMMENT '修改日期' );
--? CREATE TABLE IF NOT EXISTS USER ( ?? ?id INT UNSIGNED PRIMARY KEY auto_increment COMMENT '主键ID', ?? ?username VARCHAR (32) UNIQUE NOT NULL COMMENT '用户名', ?? ?PASSWORD VARCHAR (64) NOT NULL COMMENT '密码(存储密文)', ?? ?avatar VARCHAR (64) NOT NULL DEFAULT 'default.jpg' COMMENT '头像图片名称', ?? ?sex CHAR (1) COMMENT '性别', ?? ?mobile CHAR (11) COMMENT '手机号码', ?? ?id_code CHAR (18) COMMENT '身份证号码', ?? ?is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0未1已)', ?? ?create_date datetime NOT NULL DEFAULT NOW() COMMENT '创建日期', ?? ?modify_date datetime COMMENT '修改日期' ) ENGINE = INNODB auto_increment = 1 charset = utf8 COMMENT '用户表';
-- 省市区表? CREATE TABLE IF NOT EXISTS area ( ?? ?id INT UNSIGNED PRIMARY KEY auto_increment COMMENT '主键ID', ?? ?NAME VARCHAR (32) NOT NULL COMMENT '省市区行政名称', ?? ?parent_id INT UNSIGNED COMMENT '父级ID', ?? ?LEVEL TINYINT COMMENT '等级', ?? ?is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0未1已)', ?? ?create_date datetime NOT NULL DEFAULT NOW() COMMENT '创建日期', ?? ?modify_date datetime COMMENT '修改日期' ) ENGINE = INNODB auto_increment = 1 charset = utf8 COMMENT '省市区表';
-- 收货地址表 CREATE TABLE IF NOT EXISTS address ( ?? ?id INT UNSIGNED PRIMARY KEY auto_increment COMMENT '主键ID', ?? ?user_id INT UNSIGNED COMMENT '关联用户ID', ?? ?province_id INT UNSIGNED COMMENT '关联省ID(area表的id)', ?? ?city_id INT UNSIGNED COMMENT '关联市ID(area表的id)', ?? ?area_id INT UNSIGNED COMMENT '关联区ID(area表的id)', ?? ?province VARCHAR (32) COMMENT '冗余省的名称', ?? ?city VARCHAR (32) COMMENT '冗余市的名称', ?? ?area VARCHAR (32) COMMENT '冗余区的名称', ?? ?remark VARCHAR (32) COMMENT '备注', ?? ?is_default TINYINT COMMENT '是否默认地址', ?? ?is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0未1已)', ?? ?create_date datetime NOT NULL DEFAULT NOW() COMMENT '创建日期', ?? ?modify_date datetime COMMENT '修改日期' ) ENGINE = INNODB auto_increment = 1 charset = utf8 COMMENT '收货地址表';
-- 商品分类表? CREATE TABLE IF NOT EXISTS category ( ?? ?id INT UNSIGNED PRIMARY KEY auto_increment COMMENT '主键ID', ?? ?NAME VARCHAR (32) NOT NULL COMMENT '分类名称', ?? ?parent_id INT UNSIGNED COMMENT '父级ID', ?? ?LEVEL TINYINT COMMENT '等级', ?? ?is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0未1已)', ?? ?create_date datetime NOT NULL DEFAULT NOW() COMMENT '创建日期', ?? ?modify_date datetime COMMENT '修改日期' ) ENGINE = INNODB auto_increment = 1 charset = utf8 COMMENT '商品分类表';
-- 商品表 CREATE TABLE IF NOT EXISTS product ( ?? ?id INT UNSIGNED PRIMARY KEY auto_increment COMMENT '主键ID', ?? ?name VARCHAR (32) UNIQUE NOT NULL COMMENT '商品名称', ?? ?description VARCHAR (128) COMMENT '商品描述', ?? ?price DECIMAL (10, 2) NOT NULL COMMENT '商品价格', ?? ?stock INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '商品库存', ?? ?image VARCHAR (64) NOT NULL DEFAULT 'default_product.jpg' COMMENT '商品图片', ?? ?state TINYINT NOT NULL DEFAULT 0 COMMENT '商品状态', ?? ?is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0未1已)', ?? ?create_date datetime NOT NULL DEFAULT NOW() COMMENT '创建日期', ?? ?modify_date datetime COMMENT '修改日期' ) ENGINE = INNODB auto_increment = 1 charset = utf8 COMMENT '商品表';
-- 购物车表 CREATE TABLE IF NOT EXISTS cart ( ?? ?id INT UNSIGNED PRIMARY KEY auto_increment COMMENT '主键ID', ?? ?user_id INT UNSIGNED COMMENT '关联用户ID', ?? ?product_id INT UNSIGNED COMMENT '关联商品id', ?? ?product_name VARCHAR (32) COMMENT '冗余商品名称', ?? ?product_price DECIMAL (10, 2) COMMENT '冗余商品价格', ?? ?image VARCHAR (64) NOT NULL DEFAULT 'default_product.jpg' COMMENT '冗余商品图片', ?? ?quantity INT UNSIGNED COMMENT '数量', ?? ?state TINYINT NOT NULL DEFAULT 0 COMMENT '状态', ?? ?is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0未1已)', ?? ?create_date datetime NOT NULL DEFAULT NOW() COMMENT '创建日期', ?? ?modify_date datetime COMMENT '修改日期' ) ENGINE = INNODB auto_increment = 1 charset = utf8 COMMENT '购物车表';
-- 订单表 CREATE TABLE IF NOT EXISTS `order` ( ?? ?id INT UNSIGNED PRIMARY KEY auto_increment COMMENT '主键ID', ?? ?serial_no VARCHAR (64) UNIQUE NOT NULL COMMENT '订单流水号', ?? ?user_id INT UNSIGNED COMMENT '关联用户ID', ?? ?state TINYINT NOT NULL DEFAULT 0 COMMENT '状态', ?? ?is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0未1已)', ?? ?create_date datetime NOT NULL DEFAULT NOW() COMMENT '创建日期', ?? ?modify_date datetime COMMENT '修改日期' ) ENGINE = INNODB auto_increment = 1 charset = utf8 COMMENT '订单表';
-- 订单详情表 CREATE TABLE IF NOT EXISTS order_detail ( ?? ?id INT UNSIGNED PRIMARY KEY auto_increment COMMENT '主键ID', ?? ?serial_no VARCHAR (64) UNIQUE NOT NULL COMMENT '关联订单流水号', ?? ?product_id INT UNSIGNED COMMENT '关联商品id', ?? ?product_name VARCHAR (32) COMMENT '冗余商品名称', ?? ?product_price DECIMAL (10, 2) COMMENT '冗余商品价格', ?? ?image VARCHAR (64) NOT NULL DEFAULT 'default_product.jpg' COMMENT '冗余商品图片', ?? ?quantity INT UNSIGNED COMMENT '数量', ?? ?state TINYINT NOT NULL DEFAULT 0 COMMENT '状态', ?? ?is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0未1已)', ?? ?create_date datetime NOT NULL DEFAULT NOW() COMMENT '创建日期', ?? ?modify_date datetime COMMENT '修改日期' ) ENGINE = INNODB auto_increment = 1 charset = utf8 COMMENT '订单详情表';
-- 秒杀活动表 CREATE TABLE IF NOT EXISTS second_kill ( ?? ?id INT UNSIGNED PRIMARY KEY auto_increment COMMENT '主键ID', ? start_time datetime NOT NULL COMMENT '活动开始时间', ? end_time datetime NOT NULL COMMENT '活动结束时间', ?? ?product_id INT UNSIGNED ?COMMENT '关联商品ID', ?? ?quantity INT UNSIGNED COMMENT '库存数量', ?? ?state TINYINT NOT NULL DEFAULT 0 COMMENT '状态', ?? ?is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0未1已)', ?? ?create_date datetime NOT NULL DEFAULT NOW() COMMENT '创建日期', ?? ?modify_date datetime COMMENT '修改日期' )ENGINE = INNODB auto_increment = 1 charset = utf8 COMMENT '秒杀活动表';
-- 管理员表 CREATE TABLE IF NOT EXISTS admin ( ?? ?id INT UNSIGNED PRIMARY KEY auto_increment COMMENT '主键ID', ? adminname VARCHAR(32) UNIQUE NOT NULL COMMENT '管理员名称', ? password VARCHAR(64) NOT NULL COMMENT '管理员密码', ?? ?is_delete TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0未1已)', ?? ?create_date datetime NOT NULL DEFAULT NOW() COMMENT '创建日期', ?? ?modify_date datetime COMMENT '修改日期' )ENGINE = INNODB auto_increment = 1 charset = utf8 COMMENT '管理员表'; ?
-- DDL语句 创建关联关系 -- ALTER 语句修改从表
-- 用户- 收货地址 1对多关系 -- ·user·.id 关联 address.user_id ALTER TABLE address add CONSTRAINT fk_user_address FOREIGN KEY (user_id) REFERENCES user(id); -- 省市区表 -收货地址表 1对多关系 ALTER TABLE address add CONSTRAINT fk_area_address_province FOREIGN KEY (province_id) REFERENCES area(id); ALTER TABLE address add CONSTRAINT fk_area_address_city FOREIGN KEY (city_id) REFERENCES area(id); ALTER TABLE address add CONSTRAINT fk_area_address_area FOREIGN KEY (area_id) REFERENCES area(id); -- 省市区表 -收货地址表(自连接) 1对多关系 ALTER TABLE area add CONSTRAINT fk_area_area FOREIGN KEY (parent_id) REFERENCES area(id); -- 用户-购物车 1对多 ALTER TABLE cart add CONSTRAINT fk_user_cart FOREIGN KEY (user_id) REFERENCES user(id); -- 商品 - 购物车 1对多 ALTER TABLE cart add CONSTRAINT fk_product_cart FOREIGN KEY (product_id) REFERENCES product(id); -- 用户-订单 1对多 ALTER TABLE `order` add CONSTRAINT fk_user_order FOREIGN KEY (user_id) REFERENCES user(id); -- 订单 - 订单详情 1对多 ALTER TABLE order_detail add CONSTRAINT fk_order_orderdetail FOREIGN KEY (serial_no) REFERENCES `order`(serial_no); -- 商品-秒杀活动 ALTER TABLE second_kill add CONSTRAINT fk_product_secondkill FOREIGN KEY (product_id) REFERENCES product(id); -- 分类 -分类 1对多 ALTER TABLE category add CONSTRAINT fk_category_category FOREIGN KEY (parent_id) REFERENCES category(id);
-- 分类-商品 1对多(在product表中添加 category——level1ID,category——level2ID,category——level3ID,字段关联分类表) -- 添加字段 ALTER TABLE product add category_level1ID int UNSIGNED AFTER stock; ALTER TABLE product add category_level2ID int UNSIGNED AFTER category——level1ID; ALTER TABLE product add category_level3ID int UNSIGNED AFTER category——level2ID; -- 拉关系
ALTER TABLE product add CONSTRAINT fk_category_product_level1 FOREIGN KEY (category_level1ID) REFERENCES category(id); ALTER TABLE product add CONSTRAINT fk_category_product_level2 FOREIGN KEY (category_level2ID) REFERENCES category(id); ALTER TABLE product add CONSTRAINT fk_category_product_level3 FOREIGN KEY (category_level3ID) REFERENCES category(id);
创建测试父类BaseTest
? ? ? ? 四个静态常量? url? ?user? password? driver??
? ? ? ? 1个成员变量? conn
????????static静态代码块? ?-加载驱动
? ? ? ? ? @Before? ?建立连接
? ? ? ? ? ?@After? ? 关闭连接
package com.iweb.test;
import org.junit.After; import org.junit.Before;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;
public class BaseTest { ? ? //在程序运行过程中只需要做一次的注册驱动的代码放在静态代码块里面 ? ? private static final String URL="jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf-8&useSSL=false"; ? ? private static final String USER="root"; ? ? private static final String PASSWORD="root"; ? ? private static final String DRIVER="com.mysql.jdbc.Driver"; ? ? protected Connection conn=null; ? ? static { ? ? ? ? try { ? ? ? ? ? ? Class.forName(DRIVER); ? ? ? ? ? ? System.out.println("mysql驱动注册成功"); ? ? ? ? } catch (ClassNotFoundException e) { ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? ? ? System.out.println("mysql驱动注册失败"); ? ? ? ? } ? ? } ? ? @Before ? ? public void before(){ ? ? ? ? try { ? ? ? ? ? ? conn= DriverManager.getConnection(URL,USER,PASSWORD); ? ? ? ? ? ? System.out.println("musql已连接"); ? ? ? ? } catch (SQLException e) { ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? } ? ? @After ? ? public void after(){ ? ? ? ? try { ? ? ? ? ? ? conn.close(); ? ? ? ? ? ? System.out.println("mysql已关闭"); ? ? ? ? } catch (SQLException e) { ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? } }
生成测试数据? ?-测试类 CategoryTest? extends? BaseTest
1.商品分类表
10个一级分类
每个一级分类包含10个二级分类
每个二级分类包含10个三级分类
一级分类名字category_level1_a
二级分类名字category_level2_a_b
三级分类名字category_level3_a_b_c
package com.iweb.test;
import org.junit.Test;
import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Scanner;
public class CategoryTest extends BaseTest{
? ? //商品分类表生成10-100-1000条测试数据 ? ? @Test ? ? public void test01(){ ? ? ? ? String sql ="insert into category(id,name,parent_id,level) values(?,?,?,?)"; ? ? ? ? try { ? ? ? ? ? ? PreparedStatement ps = conn.prepareStatement(sql); ? ? ? ? ? ? int id=1;//一直在递增 ? ? ? ? ? ? for (int i = 1; i <= 10; i++) { ? ? ? ? ? ? ? ? ps.setObject(1,id); ? ? ? ? ? ? ? ? ps.setObject(2,"category_level1_"+i); ? ? ? ? ? ? ? ? ps.setObject(3,null); ? ? ? ? ? ? ? ? ps.setObject(4,1); ? ? ? ? ? ? ? ? ps.executeUpdate();//返回值不接收 ? ? ? ? ? ? ? ? int parentId1=id; ? ? ? ? ? ? ? ? id++; ? ? ? ? ? ? ? ? for (int j= 1; j <= 10; j++) { ? ? ? ? ? ? ? ? ? ? ps.setObject(1,id); ? ? ? ? ? ? ? ? ? ? ps.setObject(2,"category_level2_"+i+"_"+j); ? ? ? ? ? ? ? ? ? ? ps.setObject(3,parentId1); ? ? ? ? ? ? ? ? ? ? ps.setObject(4,2); ? ? ? ? ? ? ? ? ? ? ps.executeUpdate(); ? ? ? ? ? ? ? ? ? ? int parentId2=id; ? ? ? ? ? ? ? ? ? ? id++; ? ? ? ? ? ? ? ? ? ? for (int k = 1; k <= 10; k++) { ? ? ? ? ? ? ? ? ? ? ? ? ps.setObject(1,id); ? ? ? ? ? ? ? ? ? ? ? ? ps.setObject(2,"category_level3_"+i+"_"+j+"_"+k); ? ? ? ? ? ? ? ? ? ? ? ? ps.setObject(3,parentId2); ? ? ? ? ? ? ? ? ? ? ? ? ps.setObject(4,3); ? ? ? ? ? ? ? ? ? ? ? ? ps.executeUpdate(); ? ? ? ? ? ? ? ? ? ? ? ? id++; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? }
? ? ? ? } catch (SQLException e) { ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? } ? ? @Test ? ? public void test02(){ ? ? ? ? System.out.println("请输入要查询的分类等级:"); ? ? ? ? int lv = sc.nextInt(); ? ? ? ? System.out.println("请输入父级编号(没有父级输入0):"); ? ? ? ? Integer pid= sc.nextInt(); ? ? ? ? String sql=""; ? ? ? ? if (pid==0){ ? ? ? ? ? ? pid=null; ? ? ? ? ? ? sql="select * from category where parent_id is ? and level=?"; ? ? ? ? }else{ ? ? ? ? ? ? sql="select * from category where parent_id =? and level=?"; ? ? ? ? } ? ? ? ? try { ? ? ? ? ? ? PreparedStatement ps = conn.prepareStatement(sql); ? ? ? ? ? ? ps.setObject(1,pid); ? ? ? ? ? ? ps.setObject(2,lv); ? ? ? ? ? ? ResultSet rs = ps.executeQuery(); ? ? ? ? ? ? if (rs!=null){ ? ? ? ? ? ? ? ? while (rs.next()){ ? ? ? ? ? ? ? ? ? ? int id=rs.getInt("id"); ? ? ? ? ? ? ? ? ? ? String name= rs.getString("name"); ? ? ? ? ? ? ? ? ? ? int parentID = rs.getInt("parent_id"); ? ? ? ? ? ? ? ? ? ? int level = rs.getInt("level"); ? ? ? ? ? ? ? ? ? ? String createDate = rs.getString("create_date"); ? ? ? ? ? ? ? ? ? ? System.out.println(id+"\t"+name+"\t"+parentID+"\t"+level+"\t"+createDate); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? }
? ? ? ? } catch (SQLException e) { ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? } } ?
用户测试表UserTest
密码加密需要以依赖
?<!--安装apache的commons.codec依赖,加密和解密的工具类 ?--> ? ? ? ? <dependency> ? ? ? ? ? ? <groupId>commons-codec</groupId> ? ? ? ? ? ? <artifactId>commons-codec</artifactId> ? ? ? ? ? ? <version>20041127.091804</version> ? ? ? ? </dependency>
package com.iweb.test;
import org.apache.commons.codec.digest.DigestUtils; import org.junit.Test;
import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Random;
public class UserTest extends BaseTest {
? ? static String[] mobileArr={"138","139","156","158","159","177"} ; ? ? @Test ? ? public void test01() { ? ? ? ? //生成用户测试数据 ? ? ? ? //username -- "shop_user_n" ? ? ? ? //password -- 加密(“12345”) ? ? ? ? //sex -- 随机“男“ ”女“ ? ? ? ? //mobile -- 11位 138 ?139 ?158 ?159 177 后面加8位随机数 ? ? ? ? //身份证号码 --18位 ?320123开头 ?随机1990-2000年份 ?随机1-12月份 ?随机1-28日 随机四位数 ? ? ? ? String sql="insert into user(username,password,sex,mobile ,id_code) value(?,?,?,?,?)"; ? ? ? ? try { ? ? ? ? ? ? PreparedStatement ps = conn.prepareStatement(sql); ? ? ? ? ? ? for (int i = 0; i < 10000; i++) { ? ? ? ? ? ? ? ? ps.setObject(1,"shop_user_"+i); ? ? ? ? ? ? ? ? //DigestUtils是commons-codec三方库中的一个工具类 ? ? ? ? ? ? ? ? //md5Hex()是工具类中的一个静态方法,基于md5算法将明文进行加密 ? ? ? ? ? ? ? ? ps.setObject(2, DigestUtils.md5Hex("12345")); ? ? ? ? ? ? ? ? ps.setObject(3,randomSex()); ? ? ? ? ? ? ? ? ps.setObject(4,randomMobile()); ? ? ? ? ? ? ? ? ps.setObject(5,randomIdCode()); ? ? ? ? ? ? ? ? ps.executeUpdate(); ? ? ? ? ? ? } ? ? ? ? } catch (SQLException e) { ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? } ? ? @Test ? ? public void Test02() { ? ? ? ? //分页查询user表 ? ? ? ? System.out.println("请输入每页显示多少条:"); ? ? ? ? int pageSize= sc.nextInt(); ? ? ? ? int currentPage=1;//默认是第一页 ? ? ? ? String sql= "select * from user limit ?,?"; ? ? ? ? try { ? ? ? ? ? ? int n=-1; ? ? ? ? ? ? do { ? ? ? ? ? ? ? ? PreparedStatement ps = conn.prepareStatement(sql); ? ? ? ? ? ? ? ? ps.setObject(1,(currentPage-1)*pageSize); ? ? ? ? ? ? ? ? ps.setObject(2,pageSize); ? ? ? ? ? ? ? ? ResultSet rs = ps.executeQuery(); ? ? ? ? ? ? ? ? if (rs!=null){ ? ? ? ? ? ? ? ? ? ? while (rs.next()){ ? ? ? ? ? ? ? ? ? ? ? ? int id= rs.getInt("id"); ? ? ? ? ? ? ? ? ? ? ? ? String username =rs.getString("username"); ? ? ? ? ? ? ? ? ? ? ? ? String sex =rs.getString("sex"); ? ? ? ? ? ? ? ? ? ? ? ? String mobile =rs.getString("mobile"); ? ? ? ? ? ? ? ? ? ? ? ? String id_code =rs.getString("id_code"); ? ? ? ? ? ? ? ? ? ? ? ? System.out.println(id+"\t"+username+"\t"+sex+"\t"+mobile+"\t"+id_code); ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? System.out.println("是否查看下一页(输入1代表是)?"); ? ? ? ? ? ? ? ? n= sc.nextInt(); ? ? ? ? ? ? ? ? if (n==1){ ? ? ? ? ? ? ? ? ? ? currentPage++; ? ? ? ? ? ? ? ? }else { ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } while (true); ? ? ? ? } catch (SQLException e) { ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? } ? ?
? ? ?@Test ? ? public void Test03() { ? ? ? ? //优化LIMIT ?-添加id作为条件让SQL走索引 ? ? ? ? Integer maxId = 0;//记录上一页数据中最大的id ? ? ? ? System.out.println("请输入每页显示的行数:"); ? ? ? ? int pageSize = sc.nextInt(); ? ? ? ? String sql = "select * from user where id>? limit ?"; ? ? ? ? try { ? ? ? ? ? ? PreparedStatement ps = conn.prepareStatement(sql); ? ? ? ? ? ? do { ? ? ? ? ? ? ? ? ps.setObject(1, maxId); ? ? ? ? ? ? ? ? ps.setObject(2, pageSize); ? ? ? ? ? ? ? ? ResultSet rs = ps.executeQuery(); ? ? ? ? ? ? ? ? if (rs != null) { ? ? ? ? ? ? ? ? ? ? while (rs.next()) { ? ? ? ? ? ? ? ? ? ? ? ? int id = rs.getInt("id"); ? ? ? ? ? ? ? ? ? ? ? ? String username = rs.getString("username"); ? ? ? ? ? ? ? ? ? ? ? ? String sex = rs.getString("sex"); ? ? ? ? ? ? ? ? ? ? ? ? String mobile = rs.getString("mobile"); ? ? ? ? ? ? ? ? ? ? ? ? String id_code = rs.getString("id_code"); ? ? ? ? ? ? ? ? ? ? ? ? System.out.println(id + "\t" + username + "\t" + sex + "\t" + mobile + "\t" + id_code); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? System.out.println("输入p查看上一页,n查看下一页,任意数字查看任意页"); ? ? ? ? ? ? ? ? String s = sc.next(); ? ? ? ? ? ? ? ? if ("p".equals(s)) { ? ? ? ? ? ? ? ? ? ? maxId -= pageSize; ? ? ? ? ? ? ? ? } else if ("n".equals(s)) { ? ? ? ? ? ? ? ? ? ? maxId += pageSize; ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? maxId = pageSize * (Integer.parseInt(s) - 1); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } while (true); ? ? ? ? } catch (SQLException e) { ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? }
????private String randomSex(){ ? ? ? ? return random.nextBoolean()?"男":"女"; ? ? } ? ? private String randomMobile(){ ? ? ? ? int index=random.nextInt(mobileArr.length); ? ? ? ? random.nextInt(); ? ? ? ? int num = random.nextInt(100000000);//定义边界,最大是8位数 ? ? ? ? if (num<10000000){ ? ? ? ? ? ? num+=10000000; ? ? ? ? } ? ? ? ? return mobileArr[index]+num; ? ? } ? ? private String randomIdCode(){ ? ? ? ? String idCode="320123"; ? ? ? ? int y = random.nextInt(11) + 1990; ? ? ? ? int m = random.nextInt(12) + 1; ? ? ? ? int d = random.nextInt(28) + 1; ? ? ? ? int n = random.nextInt(10000); ? ? ? ? return idCode +y ? ? ? ? ? ? ? ? +(m<10?"0"+m:m) ? ? ? ? ? ? ? ? +(d<10?"0"+d:d) ? ? ? ? ? ? ? ? +(n<1000?1000+n:n); ? ? } }
Area地址表
package com.iweb.test;
import org.junit.Test;
import java.io.BufferedReader; import java.io.FileReader; import java.io.Reader; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;
public class AreaTest extends BaseTest {
? ? @Test ? ? public void test01() { ? ? ? ? try { ? ? ? ? ? ? Reader reader = new FileReader("C:/io/area"); ? ? ? ? ? ? BufferedReader bufReader = new BufferedReader(reader); ? ? ? ? ? ? String line = null; ? ? ? ? ? ? while ((line = bufReader.readLine()) != null) { ? ? ? ? ? ? ? ? String[] ?arr = line.split(" "); ? ? ? ? ? ? ? ? String a="0"; ? ? ? ? ? ? ? ? if (arr[2].equals(a)){ ? ? ? ? ? ? ? ? ? ? arr[2]=null; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? String sql="insert into area(id,name,parent_id,level) values(?,?,?,?)"; ? ? ? ? ? ? ? ? try { ? ? ? ? ? ? ? ? ? ? PreparedStatement ps = conn.prepareStatement(sql); ? ? ? ? ? ? ? ? ? ? ps.setObject(1,arr[0]); ? ? ? ? ? ? ? ? ? ? ps.setObject(2,arr[1]); ? ? ? ? ? ? ? ? ? ? ps.setObject(3,arr[2]); ? ? ? ? ? ? ? ? ? ? ps.setObject(4,arr[3]); ? ? ? ? ? ? ? ? ? ? ps.executeUpdate(); ? ? ? ? ? ? ? ? } catch (SQLException e) { ? ? ? ? ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } catch (Exception e) { ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? } ? ? @Test ? ? public void Test02() { ? ? ? ? //分页查询user表 ? ? ? ? System.out.println("请输入每页显示多少条:"); ? ? ? ? int pageSize= sc.nextInt(); ? ? ? ? int currentPage=1;//默认是第一页 ? ? ? ? String sql= "select * from area limit ?,?"; ? ? ? ? try { ? ? ? ? ? ? int n=-1; ? ? ? ? ? ? do { ? ? ? ? ? ? ? ? PreparedStatement ps = conn.prepareStatement(sql); ? ? ? ? ? ? ? ? ps.setObject(1,(currentPage-1)*pageSize); ? ? ? ? ? ? ? ? ps.setObject(2,pageSize); ? ? ? ? ? ? ? ? ResultSet rs = ps.executeQuery(); ? ? ? ? ? ? ? ? if (rs!=null){ ? ? ? ? ? ? ? ? ? ? while (rs.next()){ ? ? ? ? ? ? ? ? ? ? ? ? int id= rs.getInt("id"); ? ? ? ? ? ? ? ? ? ? ? ? String name =rs.getString("name"); ? ? ? ? ? ? ? ? ? ? ? ? String parent_id= rs.getString("parent_id"); ? ? ? ? ? ? ? ? ? ? ? ? int level= rs.getInt("level"); ? ? ? ? ? ? ? ? ? ? ? ? System.out.println(id+"\t"+name+"\t"+parent_id+"\t"+level); ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? System.out.println("是否查看下一页(输入1代表是)?"); ? ? ? ? ? ? ? ? n= sc.nextInt(); ? ? ? ? ? ? ? ? if (n==1){ ? ? ? ? ? ? ? ? ? ? currentPage++; ? ? ? ? ? ? ? ? }else { ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } while (true); ? ? ? ? } catch (SQLException e) { ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? } } ?
|