springboot项目学习笔记

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集合

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值