Mybatis-plus簡單配置及應用,mybatis-plus配置
mybatis-plus是由中國大神寫的mybatis增強版,可以自動產生代碼。
配置過程比較簡單。首先引入兩個maven依賴
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.0.6</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency>
一個是mybatis-plus,另一個是它自動成成代碼所依賴的模板引擎velocity。
然後將mybatis的sqlSeassionFactoryBean替換成plus增強版的,外掛程式可以選擇性配置
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property value="classpath:/mybatis-config.xml" name="configLocation" /> <!-- 自動掃描mapping.xml檔案 --> <property name="mapperLocations" value="classpath:mapper/*.xml"></property> <!-- MP 全域配置注入 --> <property name="globalConfig" ref="globalConfig" /> <!-- 外掛程式配置 --> <property name="plugins"> <array> <bean class="com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor" /> </array> </property> </bean>
mybatis-plus全域配置,主要是配置id建置原則,依賴資料庫類型,
<bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration"> <!-- 主鍵策略配置 --> <!-- 選擇性參數 AUTO->`0`("資料庫ID自增") INPUT->`1`(使用者輸入ID") ID_WORKER->`2`("全域唯一ID") UUID->`3`("全域唯一ID") --> <property name="idType" value="2" /> <!-- 資料庫類型配置 --> <property name="dbType" value="mysql" /> <!-- 全域表為底線命名設定 true --> <property name="dbColumnUnderline" value="true" /> </bean>
產生代碼
public class MpGenerator { /** * <p> * MySQL 產生示範 * </p> */ public static void main(String[] args) { AutoGenerator mpg = new AutoGenerator(); // 全域配置\\Begin\\src\\main\\java GlobalConfig gc = new GlobalConfig(); gc.setOutputDir("G:\\workspace"); gc.setFileOverride(true); gc.setActiveRecord(true); gc.setEnableCache(false);// XML 二級緩衝 gc.setBaseResultMap(true);// XML ResultMap gc.setBaseColumnList(true);// XML columList gc.setOpen(false); gc.setAuthor("XuWei"); // 自訂檔案命名,注意 %s 會自動填滿表實體屬性! gc.setMapperName("%sDao"); gc.setXmlName("%sMapper"); gc.setServiceName("%sService"); gc.setServiceImplName("%sServiceImpl"); gc.setControllerName("%sController"); mpg.setGlobalConfig(gc); // 資料來源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setDbType(DbType.MYSQL); dsc.setDriverName("com.mysql.jdbc.Driver"); dsc.setUrl("jdbc:mysql://localhost:3306/begin?useUnicode=true&characterEncoding=UTF-8&generateSimpleParameterMetadata=true"); dsc.setUsername("root"); dsc.setPassword("123"); mpg.setDataSource(dsc); // 策略配置 StrategyConfig strategy = new StrategyConfig(); // strategy.setCapitalMode(true);// 全域大寫命名 ORACLE 注意 strategy.setTablePrefix(new String[] { "t_", "tsys_" });// 此處可以修改為您的表首碼 strategy.setNaming(NamingStrategy.underline_to_camel);// 表名建置原則 strategy.setInclude(new String[] { "dept" }); // 需要產生的表 // strategy.setExclude(new String[]{"test"}); // 排除產生的表 mpg.setStrategy(strategy); //預設是service、serviceImpl、controller都產生。在這裡關閉他們 TemplateConfig tc = new TemplateConfig(); tc.setController(null); mpg.setTemplate(tc); // 組建檔案路徑// PackageConfig pc = new PackageConfig();// pc.setParent("com.xu");// pc.setEntity("entity.plus");// pc.setMapper("dao.plus");// pc.setXml("mapper.plus");// pc.setService("service.plus");// pc.setServiceImpl("service.plus.impl");// mpg.setPackageInfo(pc); // 執行產生 mpg.execute(); }
這樣代碼產生到G:\workspace目錄下面
和mybayis generator相比plus產生的程式碼對應檔xml,和dao層更加乾淨,通用的CRUD都通過dao類繼承的BaseMapper來實現。
但是缺點也很明顯,條件構造器不能像generator那樣直接將表中的欄位名稱和pojo映射,所以需要自己寫查詢條件對應的欄位名稱。
如果要拼接這樣一個查詢條件( user_name = ? and password = ? ) or( id = ? and state = ? )
mybatis-plus條件構造
EntityWrapper<User> ew = new EntityWrapper<>(); ew.eq("user_name", "向問天").eq("password", "sde"); ew.orNew("id", 3).eq("state", 2);
mybatis generator條件構造
UserExample userExample = new UserExample(); userExample.createCriteria() .andUserNameEqualTo("向問天") .andPasswordEqualTo("sde"); userExample.or() .andIdEqualTo(3) .andStateEqualTo(2); userExample.isDistinct();
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。