`

mybatis使用(3)

阅读更多

今天发现了一个奇葩的地方

mybatis的主键自动生成

1.使用 keyProperty="id"useGeneratedKeys="true"

来产生主键,只能一次生效
2.主键多次自动生成:也就是使用不支持自动生成主键的方式
<selectKey keyProperty="id" order="BEFORE" resultType="int" >
            select MAX(id)+1 as id from db_order
        </selectKey>
 
写代码测试的时候我使用第一种办法,mysql也是支持自动生成主键的,然后我添加记录,第一次成功,后来就不可以了,无语死了,后来才发现第一种方式,就只能在它默认的主键最大数的情况下加一,好像一直都是加一(原来是25,mybatis加到26,后来再加,也是在25的基础上),所以就会主键重复报错,使用第二种办法也没有这个情况。
原因:useGeneratedKeys估计是查询获取后,就一直保存了,使用了静态变量(源代码小菜去看了下,但是是在看不太懂,逻辑上我混乱了),相当于一次查询,多次使用,但是这个月肯定不科学,我在后面加了flushcache="true",也是不行;而selectkey应该就是完整的一次sql查询,能得到准确值,实现上我估计应该是没有缓存,或者有缓存,但是可以在原来基础是可以累加的
希望大神看到,提供看这一块的源代码以及怎么去看之类的技巧哈
<insert id="insertorder" parameterType="Db_order" 
		 flushCache="true" timeout="2000" ><!-- keyProperty="id"useGeneratedKeys="true" -->
		<selectKey keyProperty="id" order="BEFORE" resultType="int" >
			select MAX(id)+1 as id from db_order
		</selectKey>
		
		insert into db_order values
		(#{id},#{username},#{Ac_id},#{Ac_name},#{goodsname},#{goodsprice},#{starttime},#{address},#{effect})
	</insert>
 
 
分享到:
评论

相关推荐

    spring boot整合mybatis使用c3p0数据源连接mysql

    "spring boot整合mybatis使用c3p0数据源连接mysql" 本文主要介绍了如何使用 Spring Boot 框架与 MyBatis 框架集成,并使用 C3P0 数据源连接 MySQL 数据库。下面是相关知识点的总结: 一、Spring Boot 框架概述 * ...

    mybatis-3-config.dtd mybatis-3-mapper.dtd

    MyBatis是一个流行的Java持久层...正确理解和使用它们,可以有效地构建和维护MyBatis项目,实现灵活、高效的数据库操作。同时,由于MyBatis允许自定义扩展,开发者可以根据需求对DTD进行扩展,以满足特定项目的需求。

    Java开发系列MyBatis使用以及实现

    Java开发系列MyBatis使用以及实现Java开发系列MyBatis使用以及实现Java开发系列MyBatis使用以及实现Java开发系列MyBatis使用以及实现Java开发系列MyBatis使用以及实现Java开发系列MyBatis使用以及实现Java开发系列...

    mybatis简单使用demo

    mybatis简单使用mybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单...

    mybatis-3-mybatis-3.2.6

    3. **SqlSessionFactory**:这是MyBatis的核心,用于创建SqlSession实例。SqlSessionFactory是线程安全的,可以长期保存,多次重复使用。 4. **SqlSession**:SqlSession代表数据库的一次会话,可以执行SQL命令和...

    mybatis-3-config/mapper.dtd 解决mybatis头文件报错

    然后打开eclipse -&gt;Window-&gt;prefenrence-&gt;XML-&gt;XML Catalog-&gt;User Specifiled Entreis-&gt;Add-&gt;Location(此处是你放dtd文件的位置例如:‪D:\mybatis\mybatis-3-config.dtd)-&gt;Key(如果更改config,此处应该是:-//...

    MyBatis3官方中文文档

    首先,MyBatis的入门安装很简单,对于使用Maven构建项目的用户来说,只需在pom.xml文件中加入指定版本的mybatis依赖即可。而对于不使用Maven的用户,则需要将mybatis的jar包放置在项目的classpath中。这个过程是...

    mybatis使用的jar包.zip

    3. 创建MyBatis的Mapper接口和对应的XML映射文件,定义SQL语句和结果映射。 4. 在应用启动时,初始化SqlSessionFactory,通常是通过SqlSessionFactoryBuilder和配置文件来创建。 5. 在需要执行数据库操作的地方,...

    mybatis-3-mapper.dtd文件下载

    在 Mybatis 中,`mybatis-3-mapper.dtd` 文件扮演着至关重要的角色,它是 Mybatis 映射器接口的定义文件,用于验证 XML 映射文件的语法正确性。 `mybatis-3-mapper.dtd` 文件是基于 DTD(Document Type Definition...

    mybatis使用案例,源码

    mybatis使用案例,包含源码,配置等 mybatis使用案例,包含源码,配置等 mybatis使用案例,包含源码,配置等 mybatis使用案例,包含源码,配置等 mybatis使用案例,包含源码,配置等

    mybatis demo mybatis 实例

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 标题“mybatis demo mybatis 实例”指的是一个MyBatis的学习示例项目,...

    MyBatis基本使用总结

    在使用MyBatis时,我们需要理解其核心组件和工作原理,以便更好地进行数据库操作。 一、MyBatis核心配置文件 MyBatis的核心配置文件通常命名为`mybatis-config.xml`,它是整个MyBatis系统的总配置文件,包含了数据...

    hibernate与mybatis一起使用取长补短

    标题“hibernate与mybatis一起使用取长补短”暗示了在一个项目中同时采用这两种框架,旨在充分利用它们各自的优点,以提升项目的性能和灵活性。 Hibernate是一款强大的ORM框架,它提供了完整的对象模型支持,包括...

    mybatis-3-mybatis-3.3.0.rar

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 标题中的"mybatis-3-mybatis-3.3.0.rar"指的是MyBatis框架的3.3.0版本的...

    mybatis-3-mybatis-3.4.3

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 标题“mybatis-3-mybatis-3.4.3”指的是MyBatis框架的3.4.3版本。这个...

    Mybatis3_API Word版

    mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架...

    MyBatis的helloworld(不使用Mapper接口实现MyBatis查询数据库).zip

    在本示例中,我们将不使用Mapper接口来演示如何通过MyBatis进行基本的数据库查询,这对于理解MyBatis的核心工作原理是非常有帮助的。 首先,MyBatis的核心组件包括XML配置文件、SqlSessionFactory和SqlSession。XML...

Global site tag (gtag.js) - Google Analytics