Skip to content

Instantly share code, notes, and snippets.

@xcaspar
Created July 20, 2015 09:14
Show Gist options
  • Save xcaspar/4e8515e52a77c7f69998 to your computer and use it in GitHub Desktop.
Save xcaspar/4e8515e52a77c7f69998 to your computer and use it in GitHub Desktop.

Mybatis动态生成表字段

mybatis中一个属性:statementType。
这个属性的作用是告诉mybatis我们写的这个sql到底是预编译(PRESTATEMENT)还是非预编译(STATEMENT)的。
有什么区别呢?如果是预编译的,那么系统在初始化时就会读取这段sql代码,将指定的实体类中的字段替换了类似#{}这样的语句,就是形成了类似这样的语句:

select * from tableName where code=? 

这个时候你在系统运行时再想向这句sql中替换tableName或者code,结果可想而知。
如果是非预编译呢,结果刚好相反,他会在系统运行时才会去生成这样类似的语句。此时就可以去替换这些动态的字段或者表名之类。
如果是非预编译的话,最好使用${}而不是#{}

select order_sn, ${failCount}, fail_reason, update_time, status, trade_mode from t_order where status = #{status}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment