今天发现了一个奇葩的地方
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是一个流行的Java持久层...正确理解和使用它们,可以有效地构建和维护MyBatis项目,实现灵活、高效的数据库操作。同时,由于MyBatis允许自定义扩展,开发者可以根据需求对DTD进行扩展,以满足特定项目的需求。
Java开发系列MyBatis使用以及实现Java开发系列MyBatis使用以及实现Java开发系列MyBatis使用以及实现Java开发系列MyBatis使用以及实现Java开发系列MyBatis使用以及实现Java开发系列MyBatis使用以及实现Java开发系列...
mybatis简单使用mybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单...
3. **SqlSessionFactory**:这是MyBatis的核心,用于创建SqlSession实例。SqlSessionFactory是线程安全的,可以长期保存,多次重复使用。 4. **SqlSession**:SqlSession代表数据库的一次会话,可以执行SQL命令和...
然后打开eclipse ->Window->prefenrence->XML->XML Catalog->User Specifiled Entreis->Add->Location(此处是你放dtd文件的位置例如:D:\mybatis\mybatis-3-config.dtd)->Key(如果更改config,此处应该是:-//...
首先,MyBatis的入门安装很简单,对于使用Maven构建项目的用户来说,只需在pom.xml文件中加入指定版本的mybatis依赖即可。而对于不使用Maven的用户,则需要将mybatis的jar包放置在项目的classpath中。这个过程是...
3. 创建MyBatis的Mapper接口和对应的XML映射文件,定义SQL语句和结果映射。 4. 在应用启动时,初始化SqlSessionFactory,通常是通过SqlSessionFactoryBuilder和配置文件来创建。 5. 在需要执行数据库操作的地方,...
在 Mybatis 中,`mybatis-3-mapper.dtd` 文件扮演着至关重要的角色,它是 Mybatis 映射器接口的定义文件,用于验证 XML 映射文件的语法正确性。 `mybatis-3-mapper.dtd` 文件是基于 DTD(Document Type Definition...
mybatis使用案例,包含源码,配置等 mybatis使用案例,包含源码,配置等 mybatis使用案例,包含源码,配置等 mybatis使用案例,包含源码,配置等 mybatis使用案例,包含源码,配置等
MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 标题“mybatis demo mybatis 实例”指的是一个MyBatis的学习示例项目,...
在使用MyBatis时,我们需要理解其核心组件和工作原理,以便更好地进行数据库操作。 一、MyBatis核心配置文件 MyBatis的核心配置文件通常命名为`mybatis-config.xml`,它是整个MyBatis系统的总配置文件,包含了数据...
标题“hibernate与mybatis一起使用取长补短”暗示了在一个项目中同时采用这两种框架,旨在充分利用它们各自的优点,以提升项目的性能和灵活性。 Hibernate是一款强大的ORM框架,它提供了完整的对象模型支持,包括...
MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 标题中的"mybatis-3-mybatis-3.3.0.rar"指的是MyBatis框架的3.3.0版本的...
MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 标题“mybatis-3-mybatis-3.4.3”指的是MyBatis框架的3.4.3版本。这个...
mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架mybatis框架...
在本示例中,我们将不使用Mapper接口来演示如何通过MyBatis进行基本的数据库查询,这对于理解MyBatis的核心工作原理是非常有帮助的。 首先,MyBatis的核心组件包括XML配置文件、SqlSessionFactory和SqlSession。XML...