Mybatis实现输入用户的完整的信息分别进入两个表

使用Mybatis实现输入用户的完整的信息分别进入两个表,由于自己还是个小白,这个问题还真的难搞,使用insert来写的话,标签内只能写一句SQL,太多SQL会出现SQL注入的问题。所以我就想用存储过程来实现。下面是我的实现过程!

image
  • 首先是两张表的表结构
    image

    image

    注:这里我做了外键约束,detail表中的ded是userinfo表中的外键,
  • 建立存储过程
    image

    报的错就是:
    在这里插入图片描述
  • 接下来就是Mapper.xml

        {
          CALL insertInfo(
            #{uid,jdbcType=INTEGER,mode=IN},
            #{username,jdbcType=VARCHAR,mode=IN},
            #{password,jdbcType=VARCHAR,mode=IN},
            #{ded,jdbcType=INTEGER,mode=IN},
            #{address,jdbcType=VARCHAR,mode=IN}
          )
        }
    
  • 接口类
void insertUserInfos(Map params);
  • Test
public static void insertUserInfos() throws Exception{
        //Connection - SqlSession操作myBatis

        //config.xml  -> reader
        Reader reader = Resources.getResourceAsReader("conf.xml");

        //reader  ->SqlSession
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession session = sessionFactory.openSession();

        UserInfoMapper mappers = session.getMapper(UserInfoMapper.class);
        Map params = new HashMap<>();
        params.put("uid",11);
        params.put("username","hk");
        params.put("password","5201314");
        params.put("ded",6);
        params.put("address","花果山");

        mappers.insertUserInfos(params);

        session.commit();//提交事务
        System.out.println("增加成功!");
        session.close();
    }

  • 运行结果
    image

    最后看一下数据库的数据
    image

    image

最后就成功的实现了!

你可能感兴趣的:(Mybatis实现输入用户的完整的信息分别进入两个表)