使用mybatis同时往两张表中插入数据

zidanlee 2017-12-12 03:07:37
有两张表A(id,name),B(id,hobby), 两表id关联,比如向A表中插入一条数据(1,张三),可以向B表中插入多条数据(1,篮球),(1,足球),(1,排球),该如何使用mybatis实现呢?
...全文
9187 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hz890 2019-11-23
  • 打赏
  • 举报
回复
这样就可以在insert标签中使用多条insert语句(每个语句用分号分开)。
hz890 2019-11-23
  • 打赏
  • 举报
回复
修改数据库连接参数加上allowMultiQueries=true 参考网址: https://www.cnblogs.com/yuananyun/p/5445181.html https://www.huangdi.me/?p=129
还记不记得、 2019-11-22
  • 打赏
  • 举报
回复
使用mybatis 在同一时间向不同的表插入数据,如果直接写在 insert 标签中,每个语句用分号分开,这样运行直接报错,sql语法不正确,其他写法未试, 你插入同时插入多表数据,mybatis 可以使用 mysql 支持的存储过程将实现插入多个表。现在mysql 创建你的存储过程 myProcedure DELIMITER $ CREATE PROCEDURE myProcedure (IN id INTEGER,IN name VARCHAR,IN age INTEGER) BEGIN INSERT INTO A VALUES (NULL,id,name ,age ); INSERT INTO BVALUES (NULL,id,NULL,0,NOW(),NULL); INSERT INTO CVALUES(NULL,id,name ,NULL,NULL,LAST_INSERT_ID()); END $ 在mybatis 中,标签中直接使用 call myProcedure() ; 将你需要传入的参数按照mybatis 规范写入就OK。
moruchuchen 2017-12-28
  • 打赏
  • 举报
回复 3
在业务层实现不就行了,或者controller里面写操作另外一张表的方法
大碗2512 2017-12-12
  • 打赏
  • 举报
回复
useGeneratedKeys="true" :设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。(适用于mysql、sqlserver数据库,oracle不能使用) keyProperty:赋值的对象的属性名称。 demo:

<insert id="insertUser" useGeneratedKeys="true" keyProperty="userId" parameterType="com.domain.User">  
    insert into user(userName,password)  
    values(#{userName},#{password})  
</insert>  

userDao.insertUser(user);//插入操作  
//插入B表逻辑,其中id为user.getUserId();
qq_41228556 2017-12-12
  • 打赏
  • 举报
回复
<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.*.vo.User"> insert into t_user values(default,#{userName},#{password},#{realmId.id},0) </insert>
xls丶 2017-12-12
  • 打赏
  • 举报
回复
在b表关联A表主键
qq_41228556 2017-12-12
  • 打赏
  • 举报
回复 6
你的意思是往A中插入一条数据,然后获取这条数据的主键值,在往B中插入数据吧

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧