新闻详情

新闻详情

首页 / 资讯中心 / 详情

Mybatis高阶

发布时间:2026/9/5 23:58:15来源:尧图网络
Mybatis高阶
动态SQL当我们注册页面时,当中的所要填入的选项有必选项和非必需选项,而非必选项当中用户可能会有不确定的选项时,应该采取默认值而不是将数值置为null,那么怎么解决这一问题,就需要使用动态SQL语句来实现if标签insert idinsertByCondition insert into user_info (username,password,age if testgender ! null ,gender /if ) values (#{username},#{password},#{age} if testgender ! null ,#{gender} /if ) /inser之前时一个字段时非必选项,如果当多个字段都不确定时,可能就会导致SQL语句报错下一个标签来来解决这个问题trim标签suffixOverrides:去除后缀perfixOverrides:去除前缀prefix:添加前缀suffix:添加后缀insert idinsertByCondition insert into user_info trim suffixOverrides, prefix( suffix) if testusername ! null username, /if if testpassword ! null password, /if if testage ! null age, /if if testgender ! null gender /if /trim trim suffixOverrides, prefixvalues ( suffix) if testusername ! null #{username}, /if if testpassword ! null #{password}, /if if testage ! null #{age}, /if if testgender ! null #{gender} /if /trim /insertwhere标签根据条件拼接SQL语句进行查询,如果SQL语句where后面的条件都没有,SQL语句就会出错第一种解决办法select idselectByCondition resultTypecom.Kon.mybatis.entity.UserInfo select * from user_info where 11 trim prefixOverridesand if testage ! null and age #{age} /if if testgender ! null and gender #{gender} /if /trim /select第二种(加where标签)帮忙去掉and,并且没有条件where关键字就不会出现set标签和where标签同理foreach标签可以对集合进行遍历,例如:进行批量删除delete idbatchByCondition delete from user_info where id in foreach collectionids itemid open( close) separator, #{id} /foreach /deleteinclude标签SQL语句当中会有重复的语句,就需要此标签来替代sql idnormal id, username, password, age, gender, phone, delete_flag, create_time, update_time /sql !--只有select需要对象映射,resultType -- select idselectAll resultTypecom.Kon.mybatis.entity.UserInfo select include refidnormal/include from user_info /selectMyBatis Generator通过MyBatis Generator插件更具数据表生成Model, Mapper接⼝以及SQL映射⽂件通过添加插件plugin groupIdorg.mybatis.generator/groupId artifactIdmybatis-generator-maven-plugin/artifactId version1.3.6/version executions execution idGenerate MyBatis Artifacts/id phasedeploy/phase goals goalgenerate/goal /goals /execution /executions configuration !--generator配置文件所在位置-- configurationFilesrc/main/resources/generate/generator.xml/configurationFile !-- 允许覆盖生成的文件, mapxml不会覆盖, 采用追加的方式-- overwritetrue/overwrite verbosetrue/verbose !--将当前pom的依赖项添加到生成器的类路径中-- includeCompileDependenciestrue/includeCompileDependencies /configuration dependencies dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.33/version /dependency /dependencies /plugin添加generatorConfig.xml并修改?xml version1.0 encodingUTF-8? !DOCTYPE generatorConfiguration PUBLIC -//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd !-- 配置生成器 -- generatorConfiguration !-- 一个数据库一个context -- context idMysqlTables targetRuntimeMyBatis3Simple defaultModelTypeflat !--去除注释-- commentGenerator property namesuppressDate valuetrue/ property namesuppressAllComments valuetrue / /commentGenerator !--数据库链接信息-- jdbcConnection driverClasscom.mysql.jdbc.Driver connectionURLjdbc:mysql://127.0.0.1:3306/book_test?serverTimezoneAsia/Shanghaiamp;nullCatalogMeansCurrenttrue userIdroot password123456 /jdbcConnection !-- 生成实体类 -- javaModelGenerator targetPackagegenerate.entity targetProjectsrc/main/java property nameenableSubPackages valuefalse/ property nametrimStrings valuetrue/ /javaModelGenerator !-- 生成mapxml文件 -- sqlMapGenerator targetPackageMybatisGenerator targetProjectsrc/main/resources property nameenableSubPackages valuefalse / /sqlMapGenerator !-- 生成mapxml对应client也就是接口dao -- javaClientGenerator targetPackagegenerate.mapper targetProjectsrc/main/java typeXMLMAPPER property nameenableSubPackages valuefalse / /javaClientGenerator !-- table可以有多个,每个数据库中的表都可以写一个tabletableName表示要匹配的数据库表,也可以在tableName属性中通过使用%通配符来匹配所有数据库表,只有匹配的表才会自动生成文件 -- table tableNamebook_info property nameuseActualColumnNames valuefalse / !-- 数据库表主键 -- generatedKey columnid sqlStatementMysql identitytrue / /table table tableNameuser_info property nameuseActualColumnNames valuefalse / !-- 数据库表主键 -- generatedKey columnid sqlStatementMysql identitytrue / /table /context /generatorConfiguration
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

调试记录2026 2026/9/6 0:01:15

调试记录2026

2026年7月20日 Depth Anything V3生成的点云,效果看上去还可以 在Photoshop中进行高斯模糊(模拟失焦)后再检测,依然可以保持尺相对度: 更大的高斯模糊 在图片中添加纯色块 2026年8月10日 MUJOCO动力学仿真

阅读更多 →
AI Agent之后,企业真正需要的不是一个机器人,而是一支AI员工团队 2026/9/6 0:01:15

AI Agent之后,企业真正需要的不是一个机器人,而是一支AI员工团队

系列文章目录 《AI Agent之后,企业真正需要的不是一个机器人,而是一支AI员工团队》 《为什么很多企业用了AI工具,却没有真正实现AI转型?》 《未来企业组织架构:人类员工 AI数字员工》 《企业建设AI Agent&#xff0c…

阅读更多 →
基于CNN的调制信号识别:MATLAB实现时频图分类实战 2026/9/6 0:01:15

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

阅读更多 →
超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论 2026/9/6 0:01:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

阅读更多 →
超人会飞不算本事:系统稳定依赖清晰规则与边界设计 2026/9/6 0:01:15

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

阅读更多 →
【SAP】FI知识补充 2026/9/5 23:58:15

【SAP】FI知识补充

1.清账清的是启用了未清项管理的科目。GR借:原材料贷:GR/IRIR借:GR/IR贷:供应商(应付)付款借:供应商(应付)贷:银行存款贷:尾差(营业外…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞