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
其他配置信息看官网 http://mp.baomidou.com/guide/
代码生成器
@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
添加配置类
性能分析
添加一个插件
乐观锁
对应的表字段加注解
配置类