java实习生工作了一个月的小分享springboot+jpa(spring data jpa),顺便附带一个判断当天时间的方法

希望能帮到准备实习的朋友
ps:springboot+jpa+shiro+redis+maven+swagger
ps:jpa对多表的支持并不好,所以基本都是单表查询的,所以需要多个表的数据时,都是一个一个表查询
ps:具体jpa用法请百度

架构层次
--------因为没到公司实习前使用的持久层是Mybatis,没接触过Hibernate,而且层次分的不一样。以前是Controller+Service+Bean。而现在持久层用的是jpa(spring data jpa,可以说是Hibernate的升级版吧),所以很不适应,刚来公司的时候看前辈们写代码看了一个星期,才开始上手项目。
-------------------------------- 稍微解释一下这些层次,因为可能有很多小伙伴没有接触过:1.bo层:是用来包装一个接口返回给前端的所有数据,比如前端需要Name表里面name数据,和Sex表里的sex数据,那么bo实体类的封装的属性就是name和sex,通过单表查询出这两个数据然后set进去就行了,数据和集合以此类推
2.business:接口类和接口实现类
3.po:jpa对应数据库表实体类,jpa这个功能感觉挺好用,只要加上注解@Entity,
@Entity(name = “xwj_user”) 表明该类 (UserPeopler) 为一个实体类,它默认对应数据库中的表名是user_peopler。springboot配好数据库连接之后,你创建这个表,项目运行后,会自动帮你在数据库生成这个表,挺方便的

//po层代码
@Entity
@Table(name = "user_people")
//--------或者@Entity(name = "xwj_user")
public class UserPeople {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)//JPA注解:主键自增
    private Long id;
    private String name;
    private String sex;
    //get和set省略
    }

4.repository层:写数据库查询语句的,这时候就体现了jpa单表查询的强大了,你只需要
继承extends JpaRepository<UserPeopler,Long>,就可以同过各个字段查询了,
比如要通过name查询UserPeople,只需要findBy+Name就行了,看代码

public interface UserPeopleRepository extends JpaRepository<UserPeopler,Long>{
          UserPeople findByName(String name);
          }

5.vo层:接受前端传来数据实体类,你需要什么数据就用这个vo实体类来收,比如我需要name字段,和sex字段这两个字段去数据库查数据返回给前端,那么前端需要把这个name和sex传过来,那么就创建一个vo来接收这两个数据,所以vo封装的字段就是name和sex

6.介绍了一下使用的框架层次,现在说说遇到最多的问题,空指针异常
(NullPointer Exception),还有就是bo层的使用。空指针异常出现多的原因就是测试时数据库里没有数据,你可能觉得加数据不就好了吗?但是前端对接接口时的时候并不会看着数据来加,所以这时候就有必要做null判断抛出异常提示前端,这样前端就不会来找你的麻烦了。ps:一两个接口或许没什么,但是多了你会发现这会大大影响你的工作效率

       UserPeople userPeople = UserPeopleRepository.findByName(name);
        if (heroTask == null){
            throw new UserException(40000,"没有数据");
        }

判断传入时间是否为当天

class DateUtil{
public static boolean isIntradayTime(Date date){
		// 获取当天凌晨0点0分0秒Date
		Calendar calendar1 = Calendar.getInstance();
			calendar1.set(calendar1.get(Calendar.YEAR), calendar1.get(Calendar.MONTH), calendar1.get(Calendar.DAY_OF_MONTH),
				0, 0, 0);
		Date beginOfDate = calendar1.getTime();
       // 获取当天23点59分59秒Date
		Calendar calendar2 = Calendar.getInstance();
		calendar1.set(calendar2.get(Calendar.YEAR), calendar2.get(Calendar.MONTH), calendar2.get(Calendar.DAY_OF_MONTH),
				23, 59, 59);
		Date endOfDate = calendar1.getTime();
		if(date == null){
			return false;
		}
		if(date.getTime() >= beginOfDate.getTime() && date.getTime() <= endOfDate.getTime()){
			return true;
		}
		else {
			return false;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值