开发工具与关键技术:java eclipse
作者:听民谣的老猫
撰写时间:2020.8.8
以前有写过c#的一些技术点分享,最近学习了java编程语言,开启了另一扇大门。
学会了我们程序员的传统 "hello world"作为开篇第一个程序后,我们就会接触到数据库的一系列增,删,查,改
这一篇博客就讲的是java多表新增
java多表新增
多表新增最常见的肯定就是用户表和用户信息表的操作。
然后就是sql新增语句的编写
user和user_info表的新增sql语句,建议写的sql语句先去sql那调试。
在确定了sql语句的可执行性后就可以进行新增方法的代码编写
public boolean insert(Users t) {
System.out.println(t.toString());
boolean bolR=false;
try {
conn=DbUtil.getConnection();
//将事务设置为手动提交
conn.setAutoCommit(false);
ps=conn.prepareStatement(userinfoinsert,Statement.RETURN_GENERATED_KEYS);
ps.setInt(1, t.getAge());
ps.setInt(2, t.getSex());
ps.setString(3, t.getIdNumber());
ps.setString(4, t.getPicture());
int i=ps.executeUpdate();
rs = ps.getGeneratedKeys();// 返回新增的ID
if (i>0 && rs.next()) {
ps=conn.prepareStatement(userinsert);
ps.setString(1, t.getUserName());
ps.setString(2, t.getPassword());
ps.setInt(3, t.getUserTypeId());
ps.setTimestamp(4,new Timestamp(t.getOpDatetime().getTime()));
ps.setInt(5, rs.getInt(1));
int s=ps.executeUpdate();
if (s>0) {
bolR=true;
//提交事务
conn.commit();
}
}
} catch (SQLException e) {
e.printStackTrace();
//回滚事务
try { conn.rollback(); }
catch (SQLException e1) {
e1.printStackTrace();
}
}finally{
DbUtil.close(conn, ps, rs);
}
return bolR;
}
代码解析
多表新增为了防止代码出现报错,但是在保错前就已经新增了一张表的数据所以我们开启事务,并在代码捕获异常一旦出现代码错误就进行数据的回滚。
开启事务
数据回滚
在两张表的数据全部新增完毕后再提交事务
两张表数据之间的类型无非就是主键外键,在user表肯定存在一个外键user_info_id去起到一个连接的作用。也就是说在我们新增了user_info表之后肯定需要拿到新增数据的对应id。
那怎么拿到我们新增数据的id呢??
![](https://img-blog.csdnimg.cn/2020080919453655.png)
就是画了荧光的代码就可以做到新增数据id的获取。