1. 程式人生 > >springboot mybatis-plus 使用

springboot mybatis-plus 使用

建立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

新增配置類

效能分析

新增一個外掛

樂觀鎖

對應的表字段加註解

配置類