利用海康威视做直播网站,高端品牌网站建设网站开发注意什么,淘宝客如何做淘宝客网站,vs网站开发需要的组件最近接了一个项目#xff0c;说是项目其实也不算是项目#xff0c;因为是把这个项目赛到其他项目中的。
熟悉一些这个项目的功能#xff0c;梳理了一下#xff0c;在代码开发中主要关心pojo、entity、respository、controller、service。
在这里主要记录前3个的流程与作用…最近接了一个项目说是项目其实也不算是项目因为是把这个项目赛到其他项目中的。
熟悉一些这个项目的功能梳理了一下在代码开发中主要关心pojo、entity、respository、controller、service。
在这里主要记录前3个的流程与作用。后面两个就不管了任何开发技术中都比较常见。
1.pojo层
在这个项目中pojo常被用来接受前端传入的数据其实上是一个只包含get、set的java普通对象没有任何注解与其他方法。方便前端传入表单数据通常有时候有Responsebody在control层中修饰一下序列化。
2.entity层
这个主要涉及到java Persistence(持久化) api。在entity层中每个类都包含一些注解例如
Generated( value {http://www.jooq.org,jOOQ version:3.9.0},comments This class is generated by jOOQ
)Entity
Table(name table1)
NamedQuery(namexxxx.xx, querySELECT * FROM table1 where table1.name ?1)
public class CarCollectInfo implements Serializable{IdGeneratedValue(strategyGenerationType.IDENTITY)Transientprivate String stattype;Temporal(TemporalType.TIMESTAMP)private Date inserttime;Column(name data_name)private String name;
}Generated注解
表明该地方由其他工具生成无实际意义。
Entity、Table、NameQueries、NameQuery
Entity注解和Table注解都是Java Persistence API中定义的一种注解。
Entity说明这个class是实体类并且使用默认的ormObject-Relational Mapping规则即class名就是数据库表中表名class的属性名即表中字段名。Entity注解指明这是一个实体Bean。Table注解是一个非必须的注解Table注解指定了Entity所要映射的数据库表其中Table.name()用来指定映射表的表名。如果同时使用了Entity(namestudent)和Table(namebook)最终对应的表名是book这说明优先级TableEntityNameQueries用于定义查询多个NameQuery用于定义单个命名查询。类似于Query。
Spring Data JPA 从入门到精通~NamedQueries预定义查询
Id注解用于映射实体类中的主键字段。标识表的主键GeneratedValue(strategy GenerationType.IDENTITY) 主键生成策略。自增当POJO有属性不需要映射的时候一定要用Transitent修饰该注释表示此属性与表没有映射关系只是一个暂时的属性。Column,标识了class类属性和数据库表字段映射关系。
Entity、Table、Column、Id、PropertyDef的见解
Entity和Table的区别
Entity说明这个class是实体类并且使用默认的orm规则即class名即数据库表中表名class字段名即表中的字段名
如果想改变这种默认的orm规则就要使用Table来改变class名与数据库中表名的映射规则Column来改变class中字段名与db中表的字段名的映射规则 orm: ORM是对象关系映射Object-Relational Mapping的缩写 就是把数据库中的表映射为java的类表中的记录映射为java的对象列映射为java类中的属性 该框架可以在不写SQL语句的前提下完成对单表的CRUD操作 关于Entity和Table注解的用法详解
3.Repository层
repository层在我看来类似于mybatis那里。control层处理接口service层处理逻辑repository和mybatis处理sql与数据。
在这个项目中Repository全是以接口的形式表现出来继承自一个MyRepository类MyRepository为继承PagingAndSortingRepository的自定义类包含对于泛型的增删改查。
public interface BaseBranchRepo extends MyRepositoryBaseBranch, Integer{//这段sql语句就是通过branchcode查询并返回BaseBranch对象。Query(valuefrom BaseBranch where branchcode ?1 )BaseBranch findBaseBranch(String branchcode);
}然后在serviceImpl层中将BaseBranchRepo 进行Autowired。其实核心还是用EntityManager em;执行sql语句返回结果list或map。
重要注解
Transactional 将方法打包成一个事务便于回滚之类的。NoRepositoryBean 该注释充当 Spring Data JPA 中的标记接口。当应用于存储库接口时它指示 Spring Data JPA 不要为该接口创建具体的存储库 bean。相反它旨在用作其他存储库接口的超类提供可继承的通用功能。 使用 NoRepositoryBean 简化数据库访问