day01
1.在idea中创建父子工程+
dao-->service->servlet
接口 封装数据 增删查找
实现类
工程
2.queryRunner 封装jdbc .query方法
3.gson对象转为jdbc
4.工具类:数据库连接类 响应封装数据类 枚举封装错误代码类
5.user类中有一个 变量运用& 、|操作来实现一个数据来控制6个权限
&运算不变的话 ,说明有这个权限
用二进制
6.数据库定义序列来生成唯一的id
定义触发器(在插入数据之前若id为空,将序列作为id)
create or replace trigger tri_tbl_goods_pk
before
insert on tbl_goods for each row when(new.id is null)
begin
select seq_tbl_goods_id.nextval into :new.id from dual;
end;
day2
1.
BeanUtils.populate(g,req.getParameterMap());
来从请求中获取的数据放入对象中的相应属性(调用了beanutils)
2.程序生成唯一的id
p.setId(IDUtil.getUUID());
public static String getUUID(){
String uuid = UUID.randomUUID().toString();
//去掉“-”符号
return uuid.replaceAll("-", "");
}
3.实现分页查询 :定义分页结果类:第几页 以及当页显示的数据 总数据数 页面数据
分页查询的sql语句:
String sql="SELECT * FROM " +
" ( SELECT A.*, ROWNUM RN FROM " +
" (SELECT * FROM TBL_DEPT) A " +
" WHERE ROWNUM <= ? ) " +//pageSize每页显示的个数
" WHERE RN > ? ";//(page-1)*pageSize第几页
4.获得主表的sno
创建存储过程目的是为了多条语句执行同时成功或者失败(也相当于添加一个事务)
CREATE OR REPLACE PROCEDURE
pro_tbl_stock_main_insert(principal tbl_stock_main.principal%TYPE,
providerid tbl_stock_main.providerid%TYPE,opname tbl_stock_main.opname%TYPE,
createtime tbl_stock_main.createtime%TYPE,state tbl_stock_main.state%TYPE,
sno OUT tbl_stock_main.sno%TYPE)
IS
BEGIN
insert into tbl_stock_main values (null,principal,providerid,
opname,createtime,state)
returning sno into sno;
--- COMMIT;
END;
调用存储过程的方法
OutParameter<Integer> op = new OutParameter<Integer>(Types.INTEGER, Integer.class);
queryRunner.execute(conn, "call pro01(?,?)", 1, op);//op为输出的数据
int result = op.getValue();
执行多条sql语句:
queryRunner.batch(sql, params);
//
DruidUtils.beginTx();//事务启动
sdao.add(m);
for (StockDetail d : dlist) {
d.setSno(m.getSno());
}
sdao.add(dlist);
DruidUtils.endTx();//提交事务
抛出异常进行事务回滚