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

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

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

    image

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

    报的错就是:
    在这里插入图片描述
  • 接下来就是Mapper.xml
<insert id="insertUserInfos" statementType="CALLABLE" parameterType="HashMap">
        {
          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}
          )
        }
    </insert>
  • 接口类
void insertUserInfos(Map<Object,Object> 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<Object, Object> 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

最后就成功的实现了!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容