日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mybatis generator 1.4.x 入门教程--转载

發布時間:2024/2/28 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mybatis generator 1.4.x 入门教程--转载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Mybatis generator 1.4.x 入門教程

一、前言

? 最近因為公司開了新的項目,所以在構建骨架的時候發現mybatis最新的版本已經更新到了1.4.0了,嘗試了一下,比起之前的mybatis版本,有了更好的優化,用上了lamada表達式,還支持動態sql查詢,所以在這里安利一波,因為之前我用的Laravel ORM,所以比較習慣使用這種lamada表達式來查詢,可能之前用習慣了以前的查詢方式的

二、官方文檔地址

官方文檔地址

三、集成 mybatis Generator 1.4.0

pom文件

?

<!-- dependencies 依賴 --> <dependencies>...<!-- 這里需要引入 動態sql相關的包--><!-- https://mvnrepository.com/artifact/org.mybatis.dynamic-sql/mybatis-dynamic-sql --><dependency><groupId>org.mybatis.dynamic-sql</groupId><artifactId>mybatis-dynamic-sql</artifactId><version>1.1.4</version></dependency> </dependencies> <!-- build 相關配置 --> <build> <plugins> ... <!--mybatis自動生成代碼--><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.4.0</version><dependencies></dependencies><configuration><!-- 這里設置配置文件的位置 --><configurationFile>src/main/resources/mybatis/configuration.xml</configurationFile><verbose>true</verbose><overwrite>true</overwrite></configuration></plugin> </plugins> </build>

配置文件 mybatis configuration.xml

?

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <!--配置參考 http://mybatis.org/generator/configreference/xmlconfig.html--> <generatorConfiguration><!-- 屬性配置文件 --><properties resource="mybatis/db.properties"/><classPathEntry location="${jdbc.jar.path}"/><context id="testTables"defaultModelType="flat"><plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin><commentGenerator><!-- 是否去除自動生成的注釋 true:是 : false:否 --><property name="suppressAllComments" value="true"/></commentGenerator><!--數據庫連接的信息:驅動類、連接地址、用戶名、密碼,這里配置的是mysql的,當然也可以配置oracle等數據庫 --><jdbcConnection driverClass="${jdbc.driver}"connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"></jdbcConnection><!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer,為 true時把JDBC DECIMAL和 NUMERIC 類型解析為java.math.BigDecimal --><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!-- targetProject:生成PO類的位置 --><javaModelGenerator targetPackage="com.xxx.entity" targetProject="src/main/java"><!-- enableSubPackages:是否讓schema作為包的后綴 --><property name="enableSubPackages" value="true"/><!-- 從數據庫返回的值被清理前后的空格 --><property name="trimStrings" value="true"/></javaModelGenerator><!-- targetPackage:mapper接口生成的位置 --><javaClientGenerator type="XMLMAPPER" targetPackage="com.xxx.mapper"targetProject="src/main/java"><!-- enableSubPackages:是否讓schema作為包的后綴 --><property name="enableSubPackages" value="true"/></javaClientGenerator><!-- 指定數據庫表 --><table tableName="xxx" schema="xxx"></table></context> </generatorConfiguration>

配置屬性文件 db.properties

?

jdbc.jar.path=/Users/xxx/.m2/repository/mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://xxx:xxx:xxx:xxx:port/dbname?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&verifyServerCertificate=false jdbc.username=username jdbc.password=password ...

四、執行generator生成 dao類和mapper接口

  • 生成dao類中每個屬性會自動加上@Generated

?

生成的dao類

  • 生成的mapper接口類,會自動生成Mapper和DynamicSqlSupport

?

五、使用舉例

  • Dao實例
import java.io.Serializable; import java.util.Date; import javax.annotation.Generated; public class Teacher implements Serializable {@Generated("org.mybatis.generator.api.MyBatisGenerator")private Integer id;@Generated("org.mybatis.generator.api.MyBatisGenerator")private String teacherNumber;@Generated("org.mybatis.generator.api.MyBatisGenerator")private String teacherName;@Generated("org.mybatis.generator.api.MyBatisGenerator")private String telephone;@Generated("org.mybatis.generator.api.MyBatisGenerator")private String email;@Generated("org.mybatis.generator.api.MyBatisGenerator")private String password;@Generated("org.mybatis.generator.api.MyBatisGenerator")private Boolean deleted;@Generated("org.mybatis.generator.api.MyBatisGenerator")private Date createdTime;@Generated("org.mybatis.gener" +"ator.api.MyBatisGenerator")private Date updatedTime;@Generated("org.mybatis.generator.api.MyBatisGenerator")private static final long serialVersionUID = 1L;@Generated("org.mybatis.generator.api.MyBatisGenerator")public Integer getId() {return id;}@Generated("org.mybatis.generator.api.MyBatisGenerator")public void setId(Integer id) {this.id = id;}@Generated("org.mybatis.generator.api.MyBatisGenerator")public String getTeacherNumber() {return teacherNumber;}@Generated("org.mybatis.generator.api.MyBatisGenerator")public void setTeacherNumber(String teacherNumber) {this.teacherNumber = teacherNumber == null ? null : teacherNumber.trim();}@Generated("org.mybatis.generator.api.MyBatisGenerator")public String getTeacherName() {return teacherName;}@Generated("org.mybatis.generator.api.MyBatisGenerator")public void setTeacherName(String teacherName) {this.teacherName = teacherName == null ? null : teacherName.trim();}@Generated("org.mybatis.generator.api.MyBatisGenerator")public String getTelephone() {return telephone;}@Generated("org.mybatis.generator.api.MyBatisGenerator")public void setTelephone(String telephone) {this.telephone = telephone == null ? null : telephone.trim();}@Generated("org.mybatis.generator.api.MyBatisGenerator")public String getEmail() {return email;}@Generated("org.mybatis.generator.api.MyBatisGenerator")public void setEmail(String email) {this.email = email == null ? null : email.trim();}... }

5.1 查找

源碼

// 根據provider查詢多個記錄@Generated("org.mybatis.generator.api.MyBatisGenerator")@SelectProvider(type=SqlProviderAdapter.class, method="select")@ResultMap("TeacherResult")Optional<Teacher> selectOne(SelectStatementProvider selectStatement);// 根據provider查詢多個記錄@Generated("org.mybatis.generator.api.MyBatisGenerator")@SelectProvider(type=SqlProviderAdapter.class, method="select")@Results(id="TeacherResult", value = {@Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),@Result(column="teacher_number", property="teacherNumber", jdbcType=JdbcType.VARCHAR),@Result(column="teacher_name", property="teacherName", jdbcType=JdbcType.VARCHAR),@Result(column="telephone", property="telephone", jdbcType=JdbcType.VARCHAR),@Result(column="email", property="email", jdbcType=JdbcType.VARCHAR),@Result(column="password", property="password", jdbcType=JdbcType.VARCHAR),@Result(column="deleted", property="deleted", jdbcType=JdbcType.BIT),@Result(column="created_time", property="createdTime", jdbcType=JdbcType.TIMESTAMP),@Result(column="updated_time", property="updatedTime", jdbcType=JdbcType.TIMESTAMP)})List<Teacher> selectMany(SelectStatementProvider selectStatement);// 根據dsl 查詢單個記錄@Generated("org.mybatis.generator.api.MyBatisGenerator")default Optional<Teacher> selectOne(SelectDSLCompleter completer) {return MyBatis3Utils.selectOne(this::selectOne, selectList, teacher, completer);} // 根據dsl 查詢多個記錄@Generated("org.mybatis.generator.api.MyBatisGenerator")default List<Teacher> select(SelectDSLCompleter completer) {return MyBatis3Utils.selectList(this::selectMany, selectList, teacher, completer);}@Generated("org.mybatis.generator.api.MyBatisGenerator")default List<Teacher> selectDistinct(SelectDSLCompleter completer) {return MyBatis3Utils.selectDistinct(this::selectMany, selectList, teacher, completer);} // 根據主鍵查詢記錄@Generated("org.mybatis.generator.api.MyBatisGenerator")default Optional<Teacher> selectByPrimaryKey(Integer id_) {return selectOne(c ->c.where(id, isEqualTo(id_)));}

實例

// 基本條件查詢@Overridepublic Teacher findById(Integer teacherId) {Optional<Teacher> teacher = teacherMapper.selectOne(c ->c.where(TeacherDynamicSqlSupport.deleted, isEqualTo(false)).and(TeacherDynamicSqlSupport.id, isEqualTo(teacherId)));if (teacher.isPresent()){return teacher.get();}return null;}// 條件查詢分頁@Overridepublic List<Teacher> getListByPager(TeacherSearchModel model) {QueryExpressionWhereBuilder builder = select(TeacherDynamicSqlSupport.teacher.allColumns()).from(TeacherDynamicSqlSupport.teacher).where(TeacherDynamicSqlSupport.deleted, isEqualTo(false));if (!StringUtils.isEmpty(model.getNumberKeyWord())){builder.and(TeacherDynamicSqlSupport.teacherNumber,isLike(model.getNumberKeyWord()));}if (!StringUtils.isEmpty(model.getNameKeyWord())){builder.and(TeacherDynamicSqlSupport.teacherName,isLike(model.getNameKeyWord()));}builder.limit(model.getPageSize()).offset(((model.getPageNumber()-1)*model.getPageSize()));SelectStatementProvider provider = builder.build().render(RenderingStrategy.MYBATIS3);List<Teacher> teachers = teacherMapper.selectMany(provider);return teachers;}

5.2 更新

源碼

// 根據provide更新@Generated("org.mybatis.generator.api.MyBatisGenerator")@UpdateProvider(type=SqlProviderAdapter.class, method="update")int update(UpdateStatementProvider updateStatement);@Generated("org.mybatis.generator.api.MyBatisGenerator")default int update(UpdateDSLCompleter completer) {return MyBatis3Utils.update(this::update, teacher, completer);}@Generated("org.mybatis.generator.api.MyBatisGenerator")static UpdateDSL<UpdateModel> updateAllColumns(Teacher record, UpdateDSL<UpdateModel> dsl) {return dsl.set(id).equalTo(record::getId).set(teacherNumber).equalTo(record::getTeacherNumber).set(teacherName).equalTo(record::getTeacherName).set(telephone).equalTo(record::getTelephone).set(email).equalTo(record::getEmail).set(password).equalTo(record::getPassword).set(deleted).equalTo(record::getDeleted).set(createdTime).equalTo(record::getCreatedTime).set(updatedTime).equalTo(record::getUpdatedTime);}@Generated("org.mybatis.generator.api.MyBatisGenerator")static UpdateDSL<UpdateModel> updateSelectiveColumns(Teacher record, UpdateDSL<UpdateModel> dsl) {return dsl.set(id).equalToWhenPresent(record::getId).set(teacherNumber).equalToWhenPresent(record::getTeacherNumber).set(teacherName).equalToWhenPresent(record::getTeacherName).set(telephone).equalToWhenPresent(record::getTelephone).set(email).equalToWhenPresent(record::getEmail).set(password).equalToWhenPresent(record::getPassword).set(deleted).equalToWhenPresent(record::getDeleted).set(createdTime).equalToWhenPresent(record::getCreatedTime).set(updatedTime).equalToWhenPresent(record::getUpdatedTime);}// 通過主鍵更新數據@Generated("org.mybatis.generator.api.MyBatisGenerator")default int updateByPrimaryKey(Teacher record) {return update(c ->c.set(teacherNumber).equalTo(record::getTeacherNumber).set(teacherName).equalTo(record::getTeacherName).set(telephone).equalTo(record::getTelephone).set(email).equalTo(record::getEmail).set(password).equalTo(record::getPassword).set(deleted).equalTo(record::getDeleted).set(createdTime).equalTo(record::getCreatedTime).set(updatedTime).equalTo(record::getUpdatedTime).where(id, isEqualTo(record::getId)));}// 通過主鍵條件更新數據@Generated("org.mybatis.generator.api.MyBatisGenerator")default int updateByPrimaryKeySelective(Teacher record) {return update(c ->c.set(teacherNumber).equalToWhenPresent(record::getTeacherNumber).set(teacherName).equalToWhenPresent(record::getTeacherName).set(telephone).equalToWhenPresent(record::getTelephone).set(email).equalToWhenPresent(record::getEmail).set(password).equalToWhenPresent(record::getPassword).set(deleted).equalToWhenPresent(record::getDeleted).set(createdTime).equalToWhenPresent(record::getCreatedTime).set(updatedTime).equalToWhenPresent(record::getUpdatedTime).where(id, isEqualTo(record::getId)));}

實例

@Overridepublic int update(Teacher teacher) {return teacherMapper.updateByPrimaryKeySelective(teacher);}

5.3 添加(插入)

源碼

// 直接完整插入@Generated("org.mybatis.generator.api.MyBatisGenerator")@InsertProvider(type=SqlProviderAdapter.class, method="insert")int insert(InsertStatementProvider<Teacher> insertStatement);@Generated("org.mybatis.generator.api.MyBatisGenerator")@InsertProvider(type=SqlProviderAdapter.class, method="insertMultiple")int insertMultiple(MultiRowInsertStatementProvider<Teacher> multipleInsertStatement);// 直接完整插入@Generated("org.mybatis.generator.api.MyBatisGenerator")default int insert(Teacher record) {return MyBatis3Utils.insert(this::insert, record, teacher, c ->c.map(id).toProperty("id").map(teacherNumber).toProperty("teacherNumber").map(teacherName).toProperty("teacherName").map(telephone).toProperty("telephone").map(email).toProperty("email").map(password).toProperty("password").map(deleted).toProperty("deleted").map(createdTime).toProperty("createdTime").map(updatedTime).toProperty("updatedTime"));}@Generated("org.mybatis.generator.api.MyBatisGenerator")default int insertMultiple(Collection<Teacher> records) {return MyBatis3Utils.insertMultiple(this::insertMultiple, records, teacher, c ->c.map(id).toProperty("id").map(teacherNumber).toProperty("teacherNumber").map(teacherName).toProperty("teacherName").map(telephone).toProperty("telephone").map(email).toProperty("email").map(password).toProperty("password").map(deleted).toProperty("deleted").map(createdTime).toProperty("createdTime").map(updatedTime).toProperty("updatedTime"));}// 條件部分插入@Generated("org.mybatis.generator.api.MyBatisGenerator")default int insertSelective(Teacher record) {return MyBatis3Utils.insert(this::insert, record, teacher, c ->c.map(id).toPropertyWhenPresent("id", record::getId).map(teacherNumber).toPropertyWhenPresent("teacherNumber", record::getTeacherNumber).map(teacherName).toPropertyWhenPresent("teacherName", record::getTeacherName).map(telephone).toPropertyWhenPresent("telephone", record::getTelephone).map(email).toPropertyWhenPresent("email", record::getEmail).map(password).toPropertyWhenPresent("password", record::getPassword).map(deleted).toPropertyWhenPresent("deleted", record::getDeleted).map(createdTime).toPropertyWhenPresent("createdTime", record::getCreatedTime).map(updatedTime).toPropertyWhenPresent("updatedTime", record::getUpdatedTime));}

實例

?

@Overridepublic int create(Teacher teacher) {return teacherMapper.insertSelective(teacher);}

5.4 刪除

源碼

@Generated("org.mybatis.generator.api.MyBatisGenerator")@DeleteProvider(type=SqlProviderAdapter.class, method="delete")int delete(DeleteStatementProvider deleteStatement);@Generated("org.mybatis.generator.api.MyBatisGenerator")default int delete(DeleteDSLCompleter completer) {return MyBatis3Utils.deleteFrom(this::delete, teacher, completer);}@Generated("org.mybatis.generator.api.MyBatisGenerator")default int deleteByPrimaryKey(Integer id_) {return delete(c -> c.where(id, isEqualTo(id_)));}

5.5 查詢數量 Count

源碼

@Generated("org.mybatis.generator.api.MyBatisGenerator")@SelectProvider(type=SqlProviderAdapter.class, method="select")long count(SelectStatementProvider selectStatement);@Generated("org.mybatis.generator.api.MyBatisGenerator")@SelectProvider(type=SqlProviderAdapter.class, method="select")long count(SelectStatementProvider selectStatement);@Generated("org.mybatis.generator.api.MyBatisGenerator")default long count(CountDSLCompleter completer) {return MyBatis3Utils.countFrom(this::count, teacher, completer);}

實例

// 這里比較坑的是select的參數是count,如果是其他的會報錯@Overridepublic long getCountByModel(TeacherSearchModel model) {QueryExpressionWhereBuilder builder = select(count()).from(TeacherDynamicSqlSupport.teacher).where(TeacherDynamicSqlSupport.deleted, isEqualTo(false));if (!StringUtils.isEmpty(model.getNumberKeyWord())){ builder.and(TeacherDynamicSqlSupport.teacherNumber,isLike(model.getNumberKeyWord()));}if (!StringUtils.isEmpty(model.getNameKeyWord())){builder.and(TeacherDynamicSqlSupport.teacherName,isLike(model.getNameKeyWord()));}SelectStatementProvider provider = builder.build().render(RenderingStrategy.MYBATIS3);long count = teacherMapper.count(provider);return count;}

5.6 查詢條件

方法說明
isNull/isNotNull是否為空/不為空
isEqualTo/isNotEqualTo是否等于/不等于
isEqualToWhenPresent/isNotEqualToWhenPresent當存在時是否(不)等于
isGreaterThan/isGreaterThanWhenPresent大于
isGreaterThanOrEqualTo/isGreaterThanOrEqualToWhenPresent大于等于
isLessThan/isLessThanWhenPresent/小于
isLessThanOrEqualTo/isLessThanOrEqualToWhenPresent小于等于
isIn/isNotInin操作
isInWhenPresent/isNotInWhenPresentin操作
isBetween/isNotBetween是否在區間
isBetweenWhenPresent/isNotBetweenWhenPresent是否在區間
isLike/isNotLikelike(需要添加%)
isLikeWhenPresent/isNotLikeWhenPresentlike(需要添加%)
isTrue/isFalse是否是true/false
isLikeCaseInsensitive/isLikeCaseInsensitiveWhenPresentlike(需要添加%)
isNotLikeCaseInsensitive/isNotLikeCaseInsensitiveWhenPresentlike(需要添加%)
isInCaseInsensitive/isInCaseInsensitiveWhenPresentin操作
isNotInCaseInsensitive/isNotInCaseInsensitiveWhenPresentin操作

六、自定義查詢

6.1 自定義mapper接口查詢

@Generated(value = "org.mybatis.generator.api.MyBatisGenerator",comments = "Source Table: user")@SelectProvider(type = SqlProviderAdapter.class,method = "select")@Results(id="UserVOResult", value = {@Result(column="id", property="id", jdbcType= JdbcType.VARCHAR, id=true),@Result(column="user_name", property="userName", jdbcType=JdbcType.VARCHAR),@Result(column="gender", property="gender", jdbcType=JdbcType.BIT),@Result(column="avatar", property="avatar", jdbcType=JdbcType.VARCHAR),@Result(column="mobile", property="mobile", jdbcType=JdbcType.VARCHAR),@Result(column="email", property="email", jdbcType=JdbcType.VARCHAR),@Result(column="organization_name", property="organizationName", jdbcType=JdbcType.VARCHAR),@Result(column="real_name", property="realName", jdbcType=JdbcType.VARCHAR),@Result(column="main_organization", property="mainOrganization", jdbcType=JdbcType.INTEGER),@Result(column="organization", property="organization", jdbcType=JdbcType.VARCHAR),@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP)})List<UserVO> selectManyJoin(SelectStatementProvider selectStatementProvider);

6.2 自定義sql解析器查詢

import java.util.regex.Matcher; import java.util.regex.Pattern;import org.apache.ibatis.mapping.SqlSource; import org.apache.ibatis.scripting.LanguageDriver; import org.apache.ibatis.scripting.xmltags.XMLLanguageDriver; import org.apache.ibatis.session.Configuration;/*** 解析sql語句該類主要用作select*/ public class SimpleSelectInLangDriver extends XMLLanguageDriver implements LanguageDriver {private static final Pattern inPattern = Pattern.compile("\\(#\\{(\\w+)\\}\\)");@Overridepublic SqlSource createSqlSource(Configuration configuration, String script, Class<?> parameterType) {Matcher matcher = inPattern.matcher(script);if (matcher.find()) {script = matcher.replaceAll("<foreach collection=\"$1\" item=\"_item\" open=\"(\" "+ "separator=\",\" close=\")\" >#{_item}</foreach>");}script = "<script>" + script + "</script>";return super.createSqlSource(configuration, script, parameterType);} }

?

import java.util.regex.Matcher; import java.util.regex.Pattern;import org.apache.ibatis.mapping.SqlSource; import org.apache.ibatis.scripting.LanguageDriver; import org.apache.ibatis.scripting.xmltags.XMLLanguageDriver; import org.apache.ibatis.session.Configuration;/*** 解析sql語句*/ public class SimpleUpdateLangDriver extends XMLLanguageDriver implements LanguageDriver{private final Pattern inPattern = Pattern.compile("\\(#\\{(\\w+)\\}\\)");@Overridepublic SqlSource createSqlSource(Configuration configuration, String script, Class<?> parameterType) { // Matcher matcher = inPattern.matcher(script); // if (matcher.find()) { // StringBuilder sb = new StringBuilder(); // sb.append("<set>"); // // sb.append("<if test=\"name != null \"> name = #{name},</if>"); // sb.append("<if test=\"price != null \"> price = #{price},</if>");/* for (Field field : parameterType.getDeclaredFields()) {String tmp = "<if test=\"_field != null\">_column=#{_field},</if>";sb.append(tmp.replaceAll("_field", field.getName()).replaceAll("_column",CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, field.getName())));}*/// sb.deleteCharAt(sb.lastIndexOf(",")); // sb.append("</set>");// script = matcher.replaceAll(sb.toString()); // script = "<script>" + script + "</script>"; // }return super.createSqlSource(configuration, script, parameterType);} }

?

import cn.jhunicom.visitor.miniapp.model.entity.mysql.UserBaseEntity; import cn.jhunicom.visitor.miniapp.utils.SimpleSelectInLangDriver; import cn.jhunicom.visitor.miniapp.utils.SimpleUpdateLangDriver; import org.apache.ibatis.annotations.Lang; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update;import java.util.List;public interface UserBaseEntityMapperExt extends UserBaseEntityMapper {@Select("SELECT * FROM user_base")@Lang(SimpleSelectInLangDriver.class)List<UserBaseEntity> selectUserEntity();@Select("SELECT * FROM user_base WHERE `name` NOT IN (SELECT name FROM user_base WHERE id IN (#{idList}))")@Lang(SimpleSelectInLangDriver.class)List<UserBaseEntity> getUserByIdInBatch(@Param("idList") List<String> idList);@Update("UPDATE user_base set name = #{name} WHERE id = #{id}")@Lang(SimpleUpdateLangDriver.class)void updateUsersById(UserBaseEntity userBaseEntity); }

七、bug記錄

7.1 in操作的坑

isIn/isNotIn/isInCaseInsensitive/isInCaseInsensitiveWhenPresent/isNotInCaseInsensitive/isNotInCaseInsensitiveWhenPresent 操作中,如果給的List(獲取其他可迭代對象)為空的話,這個條件就不生效了。

  • 例如你要進行如下操作
select * from user where id in ("xxx","xxx")
  • mybatis 中寫法
List<String> userIds = ... List<User> users = userMapper.select(c -> c.where(UserDynamicSqlSupport.id, isIn(userIds)));
  • bug

如果userIds 不為空(length = 0)的話,sql 語句是對的,如果userIds為空的話,sql語句就變成select * from user 了。÷


?

總結

以上是生活随笔為你收集整理的Mybatis generator 1.4.x 入门教程--转载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。