第三十二课 电商系统增删改查统一接口的编写
商品增删改查
统一接口
接口方法,只有五个
Add增
Delete 删
Update 更新
findAll查询所有
findOne查询某一个
add增加一个数据
不管增加哪一个表的数据
- 表名(小写)与类名一致
- 表中的字段在类中私有化封装
采用:java技术
- 反射,传入类名的字符串,使用反射技术注册这个类
Class.forName(“传入类名”);
- getDeclaredFields()方法获取所有的私有字段。相当于程序控制每个属性的输入。?
后面构造添加数据的sql语句
首先取字段:
String fields=mymaps.keySet().toString().replace("[","(").replace("]",")");
再去取表名 ?
通过类名的小写取表名.
String myclass_arr = class_name.substring(class_name.lastIndexOf(".")+1);
myclass_arr.toLowerCase()
构建insert语句的前部分
Insert into 表名(字段) values,values后面跟的是占位符问号。
再 构建语句中的问号。
int position_wenhao=mymaps.keySet().size();
String wenhao_sql="";
for(int i=0;i<position_wenhao;i++){
????wenhao_sql+="?,";
}
int wenhao_sql_len=wenhao_sql.length();
wenhao_sql=wenhao_sql.substring(0,wenhao_sql_len-1);
构建后,需要对values进行传值。 ??
mymaps.values存储的所有的值, 这个集合中的值类型是Collection,把Collection传给JDBC的工具类。
Collection中的内容除了toArray转数据去遍历所有的内容,不能用别的方法引用其中的元素。这里采用迭代器next() 方法取数据。
int index=0;
Iterator<String> myiter=args.iterator();
while(myiter.hasNext()){
????String item=myiter.next();
????System.out.println(item);
?????if(item.matches("^[0-9]+$") ){
????????ps.setInt(index+1,Integer.parseInt(item));
????}else if(item.matches("^[0-9]+.[0-9]][0-9]$")){
????????ps.setDouble(index+1,Integer.parseInt(item));
????}else{
????????ps.setString(index+1,item);
????}
?????//保证PreparedStatement能够进行每一个参数的对应
?????index++;
}
最后调用这个add接口直接传入类名
MyShop myshop=new MyShopImpl();
myshop.add("goods.MyGoods");
做订单的添加
建表保证id可以自增。
统一的删除
在编程中,凡是键值对存在的数据,一个类型是类,类在实例时,很难辩别类型。Class.forName这里传入一个字符串,反射后实例化,new Instance();,考虑HashMap
?
?
??
??
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!