1、@Data注解
该注解需要提供依赖,加载Lombok插件,该注解在实体类中使用自动提供类的get、set、equals、hashCode、tostring等方法。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
2、Dataway接口配置服务
①dataway是一个基于dataql语言的具有UI界面的接口配置工具,避免了从数据库到前端的一系列开发,大大简化了开发流程,dataway属于Hasor生
态,需要配置在springboot项目中使用。
②配置dataway首先需要在pom文件中配置依赖
<dependency>
<groupId>net.hasor</groupId>
<artifactId>hasor-spring</artifactId>
<version>4.2.5</version>
</dependency>
<dependency>
<groupId>net.hasor</groupId>
<artifactId>hasor-dataway</artifactId>
<version>4.2.5</version>
</dependency>
③在properties文件中进行参数和界面访问路径配置
④初始化数据表和数据源
CREATE TABLE interface_info (
api_id varchar(64) NOT NULL COMMENT 'ID',
api_method varchar(12) NOT NULL COMMENT 'HttpMethod:GET、PUT、POST',
api_path varchar(512) NOT NULL COMMENT '拦截路径',
api_status varchar(4) NOT NULL COMMENT '状态:-1-删除, 0-草稿,1-发布,2-有变更,3-禁用',
api_comment varchar(255) NOT NULL COMMENT '注释',
api_type varchar(24) NOT NULL COMMENT '脚本类型:SQL、DataQL',
api_script mediumtext NOT NULL COMMENT '查询脚本:xxxxxxx',
api_schema mediumtext NOT NULL COMMENT '接口的请求/响应数据结构',
api_sample mediumtext NOT NULL COMMENT '请求/响应/请求头样本数据',
api_option mediumtext NOT NULL COMMENT '扩展配置信息',
api_create_time varchar(32) NOT NULL COMMENT '创建时间',
api_gmt_time varchar(32) NOT NULL COMMENT '修改时间',
PRIMARY KEY (api_id),
UNIQUE KEY uk_interface_info (api_path)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Dataway 中的API';
CREATE TABLE interface_release (
pub_id varchar(64) NOT NULL COMMENT 'Publish ID',
pub_api_id varchar(64) NOT NULL COMMENT '所属API ID',
pub_method varchar(12) NOT NULL COMMENT 'HttpMethod:GET、PUT、POST',
pub_path varchar(512) NOT NULL COMMENT '拦截路径',
pub_status varchar(4) NOT NULL COMMENT '状态:-1-删除, 0-草稿,1-发布,2-有变更,3-禁用',
pub_comment varchar(255) NOT NULL COMMENT '注释',
pub_type varchar(24) NOT NULL COMMENT '脚本类型:SQL、DataQL',
pub_script mediumtext NOT NULL COMMENT '查询脚本:xxxxxxx',
pub_script_ori mediumtext NOT NULL COMMENT '原始查询脚本,仅当类型为SQL时不同',
pub_schema mediumtext NOT NULL COMMENT '接口的请求/响应数据结构',
pub_sample mediumtext NOT NULL COMMENT '请求/响应/请求头样本数据',
pub_option mediumtext NOT NULL COMMENT '扩展配置信息',
pub_release_time varchar(32) NOT NULL COMMENT '发布时间(下线不更新)',
PRIMARY KEY (pub_id),
KEY idx_interface_release_api (pub_api_id),
KEY idx_interface_release_path (pub_path)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Dataway API 发布历史。';
create index idx_interface_release on interface_release (pub_api_id);
@DimModule
@Component
public class ExampleModule implements SpringModule {
@Autowired
private DataSource dataSource = null;
public void loadModule(ApiBinder apiBinder) throws Throwable {
// .DataSource form Spring boot into Hasor
apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource));
// .custom DataQL
//apiBinder.tryCast(QueryApiBinder.class).loadUdfSource(apiBinder.findClass(DimUdfSource.class));
//apiBinder.tryCast(QueryApiBinder.class).bindFragment("sql", SqlFragment.class);
}
}
⑤建立Hasor模块,交给spring管理,然后把数据源注入。
@DimModule
@Component
public class DatawayModule implements SpringModule {
@Autowired
private DataSource dataSource = null;
@Override
public void loadModule(ApiBinder apiBinder) throws Throwable {
// .DataSource form Spring boot into Hasor
apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource));
}
}
⑥在spring boot启动类添加注解启用Hasor
@EnableHasor()
@EnableHasorWeb()
3、@Qualifier("name")注解
该注解与@Autowired注解连用,用于在存在多个UserDao实例时,指定要注入哪一个bean。
4、CommandLineRunner接口
该接口用于在项目启动之前预先加载数据,若有多个类实现此接口,使用@Order(value)进行加载顺序排序。
5、@DimModule注解表明是Hasor的模块,并交给spring管理。
6、配置全局拦截器(目的可能是在用户进行操作之前进行验证)
public class MyModule implements Module {
public void loadModule(ApiBinder apiBinder) throws Throwable {
//1.任意类
Matcher<Class<?>> atClass = Matchers.anyClass();
//2.任意方法
Matcher<Method> atMethod = Matchers.anyMethod();
//3.注册拦截器
apiBinder.bindInterceptor(atClass, atMethod, new SimpleInterceptor());
}
}
7、@ConfigurationProperties("properties.xml")批量注入配置文件中的属性
@Value(${...})一个一个获取配置文件中的属性
@Configuration表明当前类是一个配置类,代替xml配置文件
8、@Primary在自动装配时,当有多个相同类时确定需要装配的类。与@Qualifier("name")起相同类型作用
9、@ConditionalOnProperty(value="",name="",prefix="",havingValue="",matchIfMissing=="")在配置类中使用,决定该类是否配置。
(String)value与name属性作用一致,不可同时使用,当value所对应配置文件中的值为false时,注入不生效,不为fasle注入生效。
(String)prefix配置文件中key的前缀,功能好像与value重合,目前不了解具体用法。
(String)havingValue,当该属性值与value属性值在配置文件中对应的值相同时注入成功。
(boolean)matchIfMissing,为true时配置一定成功。
10、当@Component作用于一个类而@Bean作用于这个类中的方法上时,@Component告诉spring创建该类对象,@Bean告诉spring创建方法返回值类对象
11、InfluxdbUtils()构造方法创建InfluxdbUtils对象,InfluxDbBuild()方法返回时序数据库实例。
12、@WebFilter()定义一个拦截器,在请求到达服务器前拦截执行需要的操作
13、Mybatis-plus中Dao层与Service层需要继承两个接口一个类,Dao层接口继承BaseMapper,Service层接口继承IService和ServiceImpl
14、@TableId(value="primary key")注解表示对应实体类中的字段名与主键名。
15、@TableName("columnName")实现实体类与数据库表的映射
16、@RestController注解是@Controller(将类注入spring容器)与@ResponseBody(将类中所有接口方法的返回数据转换为json格式给前端)的结合
17、QueryWrapper条件构造器
querywrpper可以通过new来获取
//构建一个查询的wrapper
QueryWrapper<User> wrapper = new QueryWrapper<User>();
QueryWrapper含有方法
//要返回
wrapper.eq("column_name",value)//等于
wrapper.ne("column_name",value)//不等于
wrapper.gt("column_name",value)//大于
wrapper.ge("column_name",value)//大于等于
wrapper.lt("column_name",value)//小于
wrapper.le("column_name",value)//小于等于
wrapper.between("column_name",value1,value2)//在值1和值2之间
wrapper.notBetween("column_name",value1,value2)//不在值1和值2之间
wrapper.like("column_name",value)//模糊匹配%value%
wrapper.notLike("column_name",value)//模糊匹配%value%
wrapper.likeLeft("column_name",value)//模糊匹配%value
wrapper.likeRight("column_name",value)//模糊匹配value%
wrapper.isNull("column_name")//为空
wrapper.isNotNull("column_name")//不为空
wrapper.in("column_name","value1","value2"...)//匹配column_name中符合值1、值2。。。的记录
wrapper.notIn("column_name","value1","value2"...)//匹配column_name中不符合值1、值2。。。的记录
wrapper.method1().or().method2()//用于连接两个方法,表示或的关系
wrapper.method1().method2()//表示与的关系
wrapper.orderByAsc("column_name")//根据列值进行升序排序
wrapper.orderByDesc("column_name")//根据列值进行降序排序
wrapper.inSql("sql")//查找符合sql语句的值
wrapper.notInSql("sql")//查找不符合sql语句的值
18、IService接口中count方法
int count(Wrapper<T> queryWrapper)//用于有(条件)的查询记录数。
19、IService接口中page方法
IPage<T> page(IPage<T> page, Wrapper<T> queryWrapper)//用于有(条件)分页查询
20、@ResponseBody注解表示将方法中return返回值作为数据返回到前端,而不是作为链接被解析。
21、IPage中getRecords()方法从IPage中获取数据,返回list集合