-
建springboot模块;
-
添加maven依赖如下:
-
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!--MyBatisPlus启动依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.28</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> <!--Oracle数据库JDBC链接依赖--> <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> <version>19.8.0.0</version> <scope>runtime</scope> </dependency> <!--MyBatisPlus自动生成代码依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.2.0</version> </dependency> <!--JUNIT测试相关--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <!--字符集支持--> <dependency> <groupId>cn.easyproject</groupId> <artifactId>orai18n</artifactId> <version>12.1.0.2.0</version> </dependency>
-
3.使用代码自动生成工具生成结构代码:
使用MyBatisPlus ,生成必要的Controller、Service、ServiceImplement、Mapper、Model
首先new 一个class,填充代码如下:
package com.cic.partner.facadeapi.conf;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.Scanner;
/*
* 自动生成代码实现
* */
public class GeneratorCodeConfig {
/*输入控制方法*/
public static String scanner(String tips){
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
sb.append("请输入:"+tips + ":");
System.out.println(sb.toString());
if(sc.hasNext()){
String rs = sc.next();
if(rs != null && !"".equals(rs)){
return rs ;
}
}
throw new MybatisPlusException("请输入正确的" + tips);
}
public static void main(String args[]){
//初始化代码生成器
AutoGenerator mpg = new AutoGenerator();
//获取全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
//设置输出目录
gc.setOutputDir(projectPath + "/facade-api/src/main/java");
gc.setAuthor("MybatisPlusAutoBuilder");
gc.setOpen(false);
mpg.setGlobalConfig(gc);
//配置数据源
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:oracle:thin:@10.196.13.9:1521/uatora");
dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
dsc.setPassword("oracle");
dsc.setUsername("uat_user");
mpg.setDataSource(dsc);
//包配置,指定输出文件的目录
PackageConfig pc = new PackageConfig();
pc.setParent("com.cic.partner.facadeapi");
pc.setEntity("model.auto");
pc.setMapper("mapper.auto");
pc.setService("service");
pc.setServiceImpl("service.impl");
mpg.setPackageInfo(pc);
//模板配置
TemplateConfig tc = new TemplateConfig();
tc.setXml(null);
mpg.setTemplate(tc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setSuperEntityClass("com.baomidou.mybatisplus.extension.activerecord.Model");
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setEntityLombokModel(true);
strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix(pc.getModuleName() + "_");
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
}
右键Run 执行主函数:
输入欲生成相关结构代码的表名,回车执行:
生成效果(红框内为此次生成代码):
其中Model中使用了lombok中的@Data注解,可以省略getter和setter的书写,直接调用
4.基础CRUD:
MyBatisPlus的Mapper基类实现了最基本的增删改查功能,使用时只需要对Mapper对象进行注入,根据实际情况限制条件,就可以直接调用,示例如下:
package ;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cic.partner.facadeapi.mapper.auto.TGatewayPolicyMapper;
import com.cic.partner.facadeapi.model.auto.TGatewayPolicy;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/*MybaitisPlus 简单测试*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyBatisPlusSimpleTest {
//对Mapper进行注入
@Resource
private TGatewayPolicyMapper gatewayPolicyMapper;
//使用JUnit单元测试
@Test
public void selectAllTest(){
System.out.println("查询全表开始:");
Date date1 = new Date();
//构建查询条件
QueryWrapper qw = new QueryWrapper();
//相当于 where POLNO = '01202111012500207500000056'
qw.eq("POLNO","01202111012500207500000056");
//执行查询
List<TGatewayPolicy> policyList = gatewayPolicyMapper.selectList(qw);
Date date2 = new Date();
System.out.println("查询完成,用时:" + (date2.getTime()-date1.getTime()) + "毫秒");
policyList.forEach(System.out::println);
}
}
注意:需要在Springboot启动方法中增加Mapper扫描,如下:
@SpringBootApplication
@MapperScan("com.cic.partner.facadeapi.mapper.auto")
public class FacadeApiApplication {
public static void main(String[] args) {
SpringApplication.run(FacadeApiApplication.class, args);
}
}
5.自定义sql:
新建Dao并填充代码:
import com.cic.partner.facadeapi.model.auto.TGatewayPolicy;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
public interface TGatewayPolicyDao {
//自定义查询
@Select("select * from t_gateway_policy where policy_id = #{policyId}")
TGatewayPolicy queryPolicyByPolicyId(@Param("policyId") String policyId);
}
其中,@Select注解后是sql语句,使用#号作为占位符,方法参数中的Param的value与占位符内的变量对应。
在测试类中增加如下测试代码:
//对Dao进行注入
@Autowired
private TGatewayPolicyDao gatewayPolicyDao;
@Test
public void selectByIdTest(){
TGatewayPolicy policy =gatewayPolicyDao.queryPolicyByPolicyId("2021282750");
System.out.println(policy.toString());
}
注意:在springboot的启动类中增加对dao的扫描,与之前的合并:
@MapperScan({"com.cic.partner.facadeapi.mapper.auto","com.cic.partner.facadeapi.dao"})
使用JUnit测试结果如下: