有没有懂mybatis的大神帮帮忙,很急,谢谢!!!

qq_35378298 2018-05-18 10:07:19
insert操作如何返回主键,网上资料都是参数类型为javabean,返回到javabean中。想请教如果没有创建javabean,可以返回主键吗?具体如何操作?
...全文
609 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
用这个useGeneratorkeys标识主建,然后再返回结果集中添加主建字段,可以返回
ITjavaman 2018-05-23
  • 打赏
  • 举报
回复

	<insert id="insertUser" parameterClass="test.business.domain.User"   useGeneratedKeys="true" keyProperty="id"  >

	</insert>

上面的id就是你想要赋值给你输入的实体类的属性(也就是User的id属性),值就是该记录插入数据库后主键的值(自增或者不自增都可以) 伪代码 User user = new User(); inserUser(user); user.getId();
jiaping108 2018-05-23
  • 打赏
  • 举报
回复
先写个生成ID的数据库函数,然后在insert的时候直接通过selectKey调用生成就好了 <insert id="insert" parameterClass="test.business.domain.TreatOrders" > <selectKey keyProperty="orderid" type="pre"> select fm_gettreat_orderid(#orderid:VARCHAR#, 4) </selectKey> insert into t_treat_orders(orderid, usersid, createtime, orderstate) values(#orderid:VARCHAR#,#usersid:VARCHAR#,#createtime:VARCHAR#, #orderstate:INTEGER#) </insert>
粉墨听禅 2018-05-22
  • 打赏
  • 举报
回复
parameterType这个不用写,直接在dao层参数上加入@pram(“参数名”)就行
小小都不懂 2018-05-22
  • 打赏
  • 举报
回复
insert 之后再select 出来不行吗?
maradona1984 2018-05-22
  • 打赏
  • 举报
回复
1.先生成主键,再插入,最简单,也适用于各种复杂场景,比如多个表存在关联的场景 2.通过selectKey,等价于第一种 3.如果是自增长的就蛋疼了,只能再查一次
Lockie921 2018-05-22
  • 打赏
  • 举报
回复
long insert(String ... ...); <insert id="insert" useGeneratedKeys="true" keyProperty="orderId" > ... </insert> long id = dao.insert( ... ...);
devin_jia 2018-05-22
  • 打赏
  • 举报
回复
配置了 就返回
zhaojiaxing0216 2018-05-20
  • 打赏
  • 举报
回复
keyProperty就是你要把主键返回到的字段
李二的Blog 2018-05-20
  • 打赏
  • 举报
回复
不是有selectKey这种操作码
QWERT4745 2018-05-18
  • 打赏
  • 举报
回复
你的mybaits映射文件是怎么写的,插入后直接用bean.getId()就能获取
QWERT4745 2018-05-18
  • 打赏
  • 举报
回复
可以返回单个变量resultType="int"或集合resultMap="userMap"(要定义userMap格式)或resultType="java.util.HashMap"
xwn_2016 2018-05-18
  • 打赏
  • 举报
回复
貌似用变量直接接收就可以了啊,和返回到bean里是一样的 int id = save(bean);
qq_35378298 2018-05-18
  • 打赏
  • 举报
回复
直接接收的不是自增的id,是insert影响的行数,返回值一直是1
Cathy313 2018-05-18
  • 打赏
  • 举报
回复
你数据库用的哪个?可以用map代替javabean mysql的话可以参考https://blog.csdn.net/zhangxing52077/article/details/78056228
  • 打赏
  • 举报
回复
useGeneratorkeys
qq_35378298 2018-05-18
  • 打赏
  • 举报
回复
我把问题说的再具体点 parameterType这块我不想用javaBean 因为我传过来的是多个字段不是javaBean 所以就没法通过xxx.getId()获取自增的主键id了 有没有方法能获取到自增的主键id呀
JOKER叔叔 2018-05-18
  • 打赏
  • 举报
回复
默认insert返回的是成功插入的数量 得加插件
<!--新增信息,并拿到新增信息的表主键信息。  
    新增数据,得到主键的外层写法没什么特别,跟普通的insert一样。只不过里面加了selectKey-->  
<insert id="insertAndgetkey" parameterType="com.soft.mybatis.model.User">  
    <!--selectKey  会将 SELECT LAST_INSERT_ID()的结果放入到传入的model的主键里面,  
        keyProperty 对应的model中的主键的属性名,这里是 user 中的id,因为它跟数据库的主键对应  
        order AFTER 表示 SELECT LAST_INSERT_ID() 在insert执行之后执行,多用与自增主键,  
              BEFORE 表示 SELECT LAST_INSERT_ID() 在insert执行之前执行,这样的话就拿不到主键了,  
                    这种适合那种主键不是自增的类型  
        resultType 主键类型 -->  
    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">  
        SELECT LAST_INSERT_ID()  
    </selectKey>  
    insert into t_user (username,password,create_date) values(#{username},#{password},#{createDate})  
</insert> 

81,092

社区成员

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

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