Ibatis怎么返回insert时的主键

发布于 2021-11-13 18:10:37 字数 98 浏览 884 评论 9

1.数字类型   和  自动增长的就不用说了

2.我要说的是  我现在的主键是字符串类型的  怎么获取

谢谢了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

拥有 2021-11-17 14:37:01

@邓颖 啊.不好意思.没看见你的主键是String类型的.我没弄过非int的. 那我想问下:你的主键是怎么生成的? 只要是通过sql能写出来的,做法和int应该类似.resultClass="string".里面把生成id的sql包进去.

夜血缘 2021-11-17 14:35:01

在insert里面加入selectKey标签就可以了. 一般都是返回的int类型.对应数据库是自增长字段.

要注意的是: ibatis会直接返回int值. Mybatis则把int值包装在参数对象里面.

public int insert(User user) {

//ibatis方式.

int result = UserMapper.insert(user);

return result;

//Mybatis方式

user = UserMapper.insert(user);

return user.getId();

}

还要注意的是数据库类型不一样,生成ID的策略也不一样. 可以对selectKey添加属性(名字忘记了), pre---先生成ID. post---后生成ID. default是post.

沙与沫 2021-11-17 14:32:52
<insert id="insert" parameterClass="sex">
		<![CDATA[
		INSERT INTO sex (
			id, name
		) VALUES (
			#id#, #name#
		)
		]]>
		<selectKey keyProperty="id" resultClass="java.lang.String">
		<![CDATA[  
        SELECT LAST_INSERT_ID() AS id
        ]]>
        </selectKey>  
	</insert>

public static void main(String[] args) {
		Sex sex = new Sex("qqxc", "45");
		sex = sex.insert();
		System.out.println(sex.toString());
	}

 

{id=0, name=45}

你执行了insert

坏尐絯 2021-11-17 13:24:28

java.lang.String

乞讨 2021-11-17 12:31:35

你用控制台insert一条,看看select last_insert_id()能取到东西吗

挽清梦 2021-11-17 05:06:39

一样用last_insert_id啊

        <selectKey resultType="int" keyProperty="id">
            <![CDATA[SELECT LAST_INSERT_ID() AS id ]]>
        </selectKey>

这个是mybatis的,ibatis的大同小异

本王不退位尔等都是臣 2021-11-16 23:17:21

这种我试了啊 不行的 返回的是0

本宫微胖 2021-11-15 08:46:19

回复
我遇到一样的问题了,返回值一直是0,你解决这问题了吗?麻烦告知一下。Please Email to me:jakeyouxiang@126.com

高跟鞋的旋律 2021-11-13 18:57:25

一样用last_insert_id啊

        <selectKey resultType="int" keyProperty="id">
            <![CDATA[SELECT LAST_INSERT_ID() AS id ]]>
        </selectKey>

这个是mybatis的,ibatis的大同小异

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文