[Spring]常用注解和技术汇总

本文深入解析Java中的各类注解,包括验证注解如@Valid、@NotNull,实体映射注解如@Entity、@Id,以及配置注解如@MapperScan、@EnableCaching。同时,探讨了主键生成策略、时间注解的使用方法,和基于JPA的查询、关联关系处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注解

常用注解

@Valid    //使用hibernate validation的时候使用

@Validated //用spring  Validator 校验机制使用

@Entity     //实体类

@Table(name=" 表名")  

@Id  // 主键

@Pattern(regexp = "([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}", message = "邮箱错误")

@NotNull(message = "不能为空")

@NotBlank   //检查约束字符串是不是Null,最少一个非空白字符.

@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内 

@EnableTransactionManagement  // 启注解事务管理,等同于xml配置方式的 <tx:annotation-driven />

@MapperScan(basePackages = "com.test.dao", markerInterface = MyMapper.class)


// 加载properties中的配置
@ConfigurationProperties("test")
@Component
@PropertySource("classpath:test.properties")

缓存注解


@EnableCaching
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)


    @ConditionalOnMissingBean(name = "redisTemplate")


 

缓存注解的文章 https://blog.csdn.net/dreamhai/article/details/80642010

主键注解生成策略

主键生成策略
//生成32位UUID 不是标准的uuid而是去掉横杠的

  		@GenericGenerator(name = "idGenerator", strategy = "uuid") 
        @GeneratedValue(generator = "idGenerator")

//完整写法
	@GenericGenerator(name = "idGenerator", strategy = "org.hibernate.id.UUIDGenerator")
    @GeneratedValue(generator = "idGenerator")

常用的时间注解

该注解被insert 时会被触发

@CreatedDate   创建时间
@CreatedBy   创建人
@LastModifiedDate
@LastModifiedBy

使用方法

  1. 在启动类上添加 @EnableJpaAuditing
  2. 在entity类上添加 @EntityListeners(AuditingEntityListener.class)
  3. 在字段上添加 @CreatedDate

查询

// 继承接口
public interface **Repository extends JpaRepository<PjPrj, String>, JpaSpecificationExecutor {
}

关联关系

一对一

// 一个人只养一只狗

// Person
 	@OneToOne(targetEntity = Dog.class, cascade = CascadeType.PERSIST)
 	
    @JoinColumn(name = "dogid", referencedColumnName = "id")
    private Dog dog;

//Dog

在这里插入图片描述
person 表中就会将dog的id主键作为外键进行关联,完成一对一的关联关系

一对多

多对多

条件查询

  @Override
    public Page queryAll(PjPrj resources, Pageable pageable, String time) {

        Page all = pjPrjRepository.findAll(new Specification() {

            @Override
            public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) {
                List<Predicate> list = new ArrayList<Predicate>();
                //todo 条件查询

                if (!ObjectUtils.isEmpty(resources.getPjn())) {
                    list.add(criteriaBuilder.equal(root.get("pjn"), resources.getPjn()));
                }

                if (!ObjectUtils.isEmpty(time)) {
                    String[] split = time.split(",");

                    SimpleDateFormat sdfmat = new SimpleDateFormat("yyyy-MM-dd");
                    try {

                        list.add(criteriaBuilder.between(root.get("createtime"),
                                sdfmat.parse(split[0]),
                                sdfmat.parse(split[1])));
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }
                }

                Predicate[] p = new Predicate[list.size()];
                return criteriaBuilder.and(list.toArray(p));
            }
        }, pageable);

        return all;
    }

数据库配置

 #配置 Jpa
 spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: root
 


  #配置 Jpa
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL5InnoDBDialect
    #        format_sql: true # 格式化 生成的sql
    open-in-view: true
  #    show-sql: true  # 显示sql语句
世界地图矢量数据可以通过多种网站进行下载。以下是一些提供免费下载世界地图矢量数据的网站: 1. Open Street Map (https://www.openstreetmap.org/): 这个网站可以根据输入的经纬度或手动选定范围来导出目标区域的矢量图。导出的数据格式为osm格式,但只支持矩形范围的地图下载。 2. Geofabrik (http://download.geofabrik.de/): Geofabrik提供按洲际和国家快速下载全国范围的地图数据数据格式支持shape文件格式,包含多个独立图层,如道路、建筑、水域、交通、土地利用分类、自然景观等。数据每天更新一次。 3. bbbike (https://download.bbbike.org/osm/): bbbike提供全球主要的200多个城市的地图数据下载,也可以按照bbox进行下载。该网站还提供全球数据数据格式种类齐全,包括geojson、shp等。 4. GADM (https://gadm.org/index.html): GADM提供按国家或全球下载地图数据的服务。该网站提供多种格式的数据下载。 5. L7 AntV (https://l7.antv.antgroup.com/custom/tools/worldmap): L7 AntV是一个提供标准世界地图矢量数据免费下载的网站。支持多种数据格式下载,包括GeoJSON、KML、JSON、TopJSON、CSV和高清SVG格式等。可以下载中国省、市、县的矢量边界和世界各个国家的矢量边界数据。 以上这些网站都提供了世界地图矢量数据免费下载服务,你可以根据自己的需求选择合适的网站进行下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值