springboot mybatis-plus 使用
阿新 • • 發佈:2018-12-10
建立springboot環境,略過
pom檔案匯入依賴
application.properties檔案進行配置
#datasource spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mp?characterEncoding=UTF-8&useUnicode=true spring.datasource.username=root spring.datasource.password=root spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #mybatis-plus mybatis-plus.config-location=classpath:mybatis/mybatis-config.xml mybatis-plus.mapper-locations=classpath:mybatis/mappers/*.xml #ExecutorType.SIMPLE:該執行器型別不做特殊的事情, # 為每個語句的執行建立一個新的預處理語句(PreparedStatement) #ExecutorType.REUSE:該執行器型別會複用預處理語句(PreparedStatement) #ExecutorType.BATCH:該執行器型別會批量執行所有的更新語句 mybatis-plus.executor-type=simple
程式碼生成器
@Test public void contextLoads() { //1. 全域性配置 GlobalConfig config = new GlobalConfig(); config.setActiveRecord(true) // 是否支援AR模式 .setAuthor("lee-suoer") // 作者 .setOutputDir("D:\\Users\\Administrator\\IdeaProjects\\mybatisplus\\src\\main\\java") // 生成路徑 .setFileOverride(true) // 檔案覆蓋 .setIdType(IdType.AUTO) // 主鍵策略 //不已I開頭 .setServiceName("%sService") // 設定生成的service介面的名字的首字母是否為I // IEmployeeService .setBaseResultMap(true) .setBaseColumnList(true); //2. 資料來源配置 DataSourceConfig dsConfig = new DataSourceConfig(); dsConfig.setDbType(DbType.MYSQL) // 設定資料庫型別 .setDriverName("com.mysql.jdbc.Driver") .setUrl("jdbc:mysql://localhost:3306/mp") .setUsername("root") .setPassword("root"); //3. 策略配置 StrategyConfig stConfig = new StrategyConfig(); stConfig.setCapitalMode(true) //全域性大寫命名 .setNaming(NamingStrategy.underline_to_camel) // 資料庫表對映到實體的命名策略 .setTablePrefix("tbl_") .setInclude("tbl_employee"); // 生成的表 //4. 包名策略配置 PackageConfig pkConfig = new PackageConfig(); // 各種檔案生成的位置 pkConfig.setParent("com.example.mybatisplus") .setMapper("mapper") .setService("service") .setController("controller") .setEntity("entity") .setXml("mapper"); //5. 整合配置 AutoGenerator ag = new AutoGenerator(); ag.setGlobalConfig(config) .setDataSource(dsConfig) .setStrategy(stConfig) .setPackageInfo(pkConfig); //6. 執行 ag.execute(); }
執行之後生成檔案
可以將mapper.xml放入準備好的資料夾,便於管理
實體類
dao介面
service
自動注入了mapper
通用crud
自帶的serviceImpl已經為我們注入了basemapper,我們不需要手動注入mapper了,直接使用。
public void insert() { //初始化Employee物件 Employee employee = new Employee(); employee.setLastName("MP"); employee.setEmail("[email protected]"); employee.setGender("1"); employee.setAge(22); Integer result = baseMapper.insert(employee); System.out.println("result: " + result ); //獲取當前資料在資料庫中的主鍵值 Integer key = employee.getId(); System.out.println("key:" + key ); }
public void delete() { // 1 .根據id進行刪除 Integer result = baseMapper.deleteById(13); System.out.println("result: " + result ); //2. 根據 條件進行刪除 // Map<String,Object> columnMap = new HashMap<>(); // columnMap.put("last_name", "MP"); // columnMap.put("email", "[email protected]"); // Integer result = baseMapper.deleteByMap(columnMap); // System.out.println("result: " + result ); //3. 批量刪除 // List<Integer> idList = new ArrayList<>(); // idList.add(3); // idList.add(4); // idList.add(5); // Integer result = baseMapper.deleteBatchIds(idList); // System.out.println("result: " + result ); 4.包裝條件 baseMapper.delete(new QueryWrapper<Employee>().eq("last_name", "MP")); }
public void update() { //初始化修改物件 Employee employee = new Employee(); employee.setId(7); employee.setLastName("aa"); employee.setEmail("[email protected]"); employee.setGender("0"); //employee.setAge(33); Integer result = baseMapper.updateById(employee); baseMapper.update(employee,new UpdateWrapper<Employee>() .eq("last_name", "Tom") .eq("age", 44)); System.out.println("result: " + result ); }
public void select() { //1. 通過id查詢 Employee employee = baseMapper.selectById(7); System.out.println(employee); //2. 通過多個列進行查詢 id + lastName // Employee employee = new Employee(); // employee.setId(7); // employee.setLastName("ssss"); // employee.setGender("0"); // Employee result = baseMapper.selectOne(employee); // System.out.println("result: " +result ); //3. 通過多個id進行查詢 <foreach> // List<Integer> idList = new ArrayList<>(); // idList.add(4); // idList.add(5); // idList.add(6); // idList.add(7); // List<Employee> emps = baseMapper.selectBatchIds(idList); // System.out.println(emps); //4. 通過Map封裝條件查詢 // Map<String,Object> columnMap = new HashMap(); // columnMap.put("last_name", "Tom"); // columnMap.put("gender", 1); // List<Employee> emps = baseMapper.selectByMap(columnMap); // System.out.println(emps); //5. 分頁查詢 IPage<Employee> page = baseMapper.selectPage(new Page<Employee>(3, 2), null); System.out.println(page.getRecords()); }
AR操作
public void ARdelete() { Employee employee = new Employee(); boolean result = employee.deleteById(2); // employee.setId(2); // boolean result = employee.deleteById(); // System.out.println("result:" +result ); boolean result = employee.delete(new QueryWrapper<Employee>().like("last_name", "小")); System.out.println(result ); }
public void ARselect() { Employee employee = new Employee(); //Employee result = employee.selectById(14); // employee.setId(14); // Employee result = employee.selectById(); // System.out.println(result ); // List<Employee> emps = employee.selectAll(); // System.out.println(emps); // List<Employee > emps= // employee.selectList(new QueryWrapper<Employee>().like("last_name", "老師")); // System.out.println(emps); Integer result = employee.selectCount(new QueryWrapper<Employee>().eq("gender", 0)); System.out.println("result: " +result ); }
public void ARinsert() { Employee employee = new Employee(); employee.setLastName("sdsds"); employee.setEmail("[email protected]"); employee.setGender("1"); employee.setAge(35); boolean result = employee.insert(); System.out.println("result:" +result ); }
public void ARupdate() { Employee employee = new Employee(); employee.setId(20); employee.setLastName("as"); employee.setEmail("[email protected]"); employee.setGender("1"); employee.setAge(36); boolean result = employee.updateById(); System.out.println("result:" +result ); employee.update(new QueryWrapper<Employee>().eq("last_name","dsad")); }
邏輯刪除
實體類註解標註
application.properties
新增配置類
效能分析
新增一個外掛
樂觀鎖
對應的表字段加註解
配置類