首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查

    今天在使用数据库的时候,遇到一个场景,即在插入数据完成后需要返回此数据对应的自增主键id,但是在使用Mybatis中的generatedKey且确认各项配置均正确无误的情况下,每次插入成功后,返回的都是...终于凭借着一次Debugg发现的问题,原来在使用Mabatis中的insert或者insertSelective方式插入时,如使用int insert(TestGenKey testGenKey)时,返回值...int表示的是插入操作受影响的行数,而不是指的自增长id,那么返回的自增id到底去哪里了呢?...通过下面的Debugg我们知道自增id返回到testGenKey的原对象中去了。 举例示范配置 数据库示例表  generator的配置文件 <?...null : sex.trim(); } } 测试及Debugg 编写测试方法测试插入 插入成功后观察对应的变量对应的值 总结:调用Insert后插入操作之后,所得到自增长Id被赋值到原对象当中

    2.4K10

    EF简介

    错误的原因我们来分析下: 经过调试代码我们发现,当我们第一次new T_ConsultingList对象时,这个对象为空,当我们使用ef添加完数据后,再去观察这个对象我们会发现,这个对象里面已经有值了,...而里面的值就是我们刚才所添加的值,说明在我们执行完数据库添加操作之后,数据库里面的数据马上将我们所添加的数据马上映射给了当前的实体对象,所以当我们在下面指定需要修改的记录的主键时,如果修改和添加共用同一个对象...而不是用数据库映射回来的那条数据,如果你用映射回来的那条数据,但是你打算修改的那条数据的主键id却不是映射回来的那条数据的主键id,那么就会认为你要修改映射回来的那条数据的主键id,而主键是不允许修改的...3、当我们在操作完数据库对应的表示表实体后,执行dbContext.SaveChanges()后,编译器报一个实体或多个实体验证失败!...这个错误的时候,大多数情况下,是我们添加的字段的数据长度超过我们数据库定义的字段的长度,或者是我们添加的字段的数据类型和数据库的字段类型不一样导致。

    1.6K80

    为了避免出现404页面,你可以添加以下配置来处理后端返回的404错误

    为了避免出现404页面,你可以添加以下配置来处理后端返回的404错误百度网站百度秒收录方法大全?...404页面,你可以添加以下配置来处理后端返回的404错误,例如重定向到首页或自定义错误页面。...以下是补充后的配置:location / {    proxy_pass http://$upstream_pool;        # 关键配置:拦截后端错误响应    proxy_intercept_errors...root /usr/share/nginx/html;#     internal;  # 禁止直接访问# }配置说明:核心机制proxy_intercept_errors on; 使Nginx拦截后端返回的错误状态码...注意:若后端服务本身能正确处理404(返回友好页面),则无需此配置。此方案针对后端直接返回404且需Nginx干预的场景。

    10210

    Entity Framework复杂类型属性映射

    注意: 复杂类型检测要求该类型不具有引用实体类型的属性,还要求不可引用另一类型的集合属性 复杂类型的在数据库中映射的列名称为:负载类型类名_属性名 我们接下来创建 DbContext 类 public...()); } public DbSet Users { get; set; } } 创建完DbContext类后,我们编写将数据存入数据库的方法:...出现上述错误的原因是我们没有初始化 Address 类,其中一个(后面我会讲解另一个解决方法)解决方法是在 new User(){} 内初始化 Address,修正后的代码如下: using (var...,应该在实体的构造函数中初始化复杂类型; 将制度属性添加到复杂类型中时,需进行空值检查; 尽量显式注册复杂类型。...所谓原始值就是从数据库查询出来的值,当前值就是实体目前的值。入口点是 DbContext的Entry方法,返回对象类型是 DbEntityEntry 。

    84910

    从30秒到30毫秒:EF Core查询性能优化实战全记录

    开发者经常在慢速数据库查询上添加缓存层,这只是在掩盖症状而非解决问题。本文将挑战如何优化一个真实场景中的EF Core慢查询。EF Core提供了强大的工具,但使用不当会导致查询缓慢。....NET"分类下评论最多的5位用户,每位用户返回: • 用户ID • 用户名 • 评论数量(仅统计".NET"分类且7天内) • 该用户评论过的最热门3篇".NET"帖子(按点赞数排序,返回帖子ID和点赞数...在PostgreSQL中此查询耗时29-30秒。 优化1:预筛选用户 我们加载了所有用户及其评论,包括那些没有在".NET"分类下评论过的用户。...添加筛选条件只返回实际在".NET"分类下评论过的用户: public List GetTopCommenters_Optimization1_PreFilter() {...优化2:限制前5名用户 在筛选用户后,进一步限制只返回评论最多的5位用户: public List GetTopCommenters_Optimization2_LimitUsers

    10610

    Entity Framework Core 2.0 入门

    可以在Context里面override这个Onconfiguring方法: 有一个错误, 应该是Server=localhost; (这里无需调用父类的方法, 因为父类的方法什么也没做)....也可以): 输入用户名: 密码: 选择是否保存密码: 最后输入档案的名字: 随后VSCode将尝试连接该数据库, 成功后右下角会这样显示 (我这里输入有一个错误, 数据库名字应该是LearnEF): 随后在该文件中输入下面这个.../LearnEf.UI 看下控制台: 可以看到输出了sql语句, 而且这个出入动作后, 做了一个查询把插入数据生成的Id取了回来. 默认情况下log不显示传进去的参数, 这是为了安全....看一下Sql: 这个过程一共分两步: 1 插入主表, 2,使用刚插入主表数据的Id, 插入子表数据. 2.为数据库中的数据添加导航属性....使用Select可以返回匿名类, 里面可以自定义属性. 这个匿名类只在方法内有效. 看下SQL: 可以看到SQL中只Select了匿名类里面需要的字段.

    3.6K80

    Entity Framework Core 2.0 入门

    可以在Context里面override这个Onconfiguring方法: 有一个错误, 应该是Server=localhost; (这里无需调用父类的方法, 因为父类的方法什么也没做)....也可以): 输入用户名: 密码: 选择是否保存密码: 最后输入档案的名字: 随后VSCode将尝试连接该数据库, 成功后右下角会这样显示 (我这里输入有一个错误, 数据库名字应该是LearnEF.../LearnEf.UI 看下控制台: 可以看到输出了sql语句, 而且这个出入动作后, 做了一个查询把插入数据生成的Id取了回来. 默认情况下log不显示传进去的参数, 这是为了安全....看一下Sql: 这个过程一共分两步: 1 插入主表, 2,使用刚插入主表数据的Id, 插入子表数据. 2.为数据库中的数据添加导航属性....使用Select可以返回匿名类, 里面可以自定义属性. 这个匿名类只在方法内有效. 看下SQL: 可以看到SQL中只Select了匿名类里面需要的字段.

    3.9K140

    .NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记

    请求处理完成后,实例的任何状态都将被重置,并且实例本身会返回池中。 避免在维护状态的应用程序中使用上下文池。 例如,不应在请求之间共享的上下文中的私有字段。...在将上下文实例添加到池中之前,EF Core 仅重置它知道的状态。 除高度优化的方案外,池的性能提升通常可以忽略不计。...tabs=data-annotations 按照约定,将名为 Id 或的属性 Id 配置为实体的主键。...().ToString(); 新增一条数据,返回 Id 是自动生成的 028.jpg 通过数据批注方式添加创建时间,修改时间默认值 Entity /// /// 创建时间 ///...此属性也被视为并发标记,这确保了在你查询行后,如果正在更新的行发生了更改,则会出现异常。

    1K11

    .net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst

    由于这是项目的第一次迁移,如果我们修改了模型后再Add-Migration生成的时候EFCore 会在添加列之前将更新的模型与旧模型的快照进行比较。...基于该比较,EF Core 检测变化,并添加适当的迁移而不是再重新生成数据库。 最后运行命令Update-Database生成数据库和表,数据库在我们配置的程序路径下。...Install-Package Microsoft.EntityFrameworkCore.SqlServer 安装好 nuget 包后在程序包管理器控制台里面使用命令: Scaffold-DbContext...Iqueryable的作用和数据延迟加载,在我们查询数据的时候列表数据以Iqueryable类型返回,如果我们不是调用获取结果api,则不会立即查询数据库,而是等到使用tolist()、count()、...这样有利于我们在代码中复用Iqueryable,比如不同的if条件拼接后组成不同的查询语句。 EFcore 缓存。

    3.8K30
    领券