
动态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