Spring Boot 下配置SpringDataJpa
来源:互联网 发布:酷狗音乐mac版 编辑:程序博客网 时间:2024/05/18 03:45
Spring Boot
ORM 框架 Hibernate
接口 JpaRepository
jar包maven:<dependency <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency>
gradle: compile('org.springframework.boot:spring-boot-starter-data-jpa')
配置文件application.properties,springboot下会自动加载配置文件
Mysql:#DB properties: #spring.datasource.url = jdbc:mysql://127.0.0.1:3306/test#spring.datasource.username = root#spring.datasource.password = root#spring.datasource.driverClassName = com.mysql.jdbc.Driverpostgresql:#DB properties: spring.datasource.url = jdbc:postgresql://192.168.237.1:5432/postgresspring.datasource.username = postgresspring.datasource.password = postgresspring.jpa.properties.datasource.driver-class-name=org.postgresql.Driverspring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQL9Dialect#JPA Configuration:spring.datasource.testWhileIdle = truespring.datasource.validationQuery = SELECT 1# Show or not log for each sql queryspring.jpa.show-sql = true# Hibernate ddl auto (create, create-drop, update)spring.jpa.hibernate.ddl-auto = update# Naming strategyspring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
pojo映射实体类:
@Entity注释指名这是一个实体Bean,@Table注释指定了Entity所要映射带数据库表,@Table.name()用来指定映射表的表名
@Column注释定义了将成员属性映射到关系表中的哪一列和该列的结构信息,属性如下:
name:映射的列名。如:映射tbl_user表的name列,可以在name属性的上面或getName方法上面加入;
unique:是否唯一;
nullable:是否允许为空;
length:对于字符型列,length属性指定列的最大字符长度;
insertable:是否允许插入;
updatetable:是否允许更新;
columnDefinition:定义建表时创建此列的DDL;
secondaryTable:从表名。如果此列不建在主表上(默认是主表),该属性定义该列所在从表的名字。
@Id注释指定表的主键,它可以有多种生成方式:
TABLE:容器指定用底层的数据表确保唯一;
SEQUENCE:使用数据库的SEQUENCE列来保证唯一(Oracle数据库通过序列来生成唯一ID);
IDENTITY:使用数据库的IDENTITY列来保证唯一;
AUTO:由容器挑选一个合适的方式来保证唯一;
NONE:容器不负责主键的生成,由程序来完成。
@GeneratedValue注释定义了标识字段生成方式。
@Temporal注释用来指定java.util.Date或java.util.Calender属性与数据库类型date、time或timestamp中的那一种类型进行映射。
@Temporal(value=TemporalType.TIME)
@Entity@Table(name = "tbl_system_parameter")public class SystemParameters implements Serializable{ /** * */ private static final long serialVersionUID = 1L; @Id @GeneratedValue(generator = "uuid") @GenericGenerator(name = "uuid", strategy = "uuid") @Column(name = "uuid") private String uuid; @Column(name = "uuid",nullable=false) private String key; private String value; private String reserve1; public String getUuid() { return uuid; } public void setUuid(String uuid) { this.uuid = uuid; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String getReserve1() { return reserve1; } public void setReserve1(String reserve1) { this.reserve1 = reserve1; }}
service层:
@Servicepublic class SystemParamSeviceImpl implements SystemParamService { /** * 日志记录. */ private static final Logger logger = LoggerFactory.getLogger(SystemParamSeviceImpl.class); @Autowired private SystemParametersDao paramDao; //查找所有 @Override public List<SystemParameters> findAll() { try { return paramDao.findAll(); } catch (Exception e) { logger.error("find systemparameters list failure", e); return null; } } //保存或者修改list<pojo> @Override public void save(List<SystemParameters> params) { try { paramDao.save(params); } catch (Exception e) { logger.error("save systemparametersList failure: ", e); throw new RuntimeException(e); } } //保存或者修改pojo @Override public void save(SystemParameters systemParameters) { try{ paramDao.save(systemParameters); }catch(Exception e){ logger.error("save systemparameters failure: ", e); throw new RuntimeException(e); } } //通过id删除 @Override public void delete(String uuid) { try { paramDao.delete(uuid); } catch (Exception e) { logger.error("delete systemparameters failure: ", e); throw new RuntimeException(e); } } //查找通过key @Override public List<SystemParameters> findByKey(String key) { List<SystemParameters> list ; try { list = paramDao.findByKey(key); } catch (Exception e) { logger.error("find systemparameters by key failure: ", e); return null; } return list; } //修改value通过匹配key @Override @Transactional public void modifySystemParameters(String key, String value) { try { paramDao.modifySystemParameters(value,key); } catch (Exception e) { logger.error("update systemParameters by key failure: ", e); throw new RuntimeException(e); } } }
dao层:
只需要继承Repository接口 底层接口是JpaRepository Spring Data 自己封装的JPA接口类
还有CrudRepository接口,继承Repository,有基本的增删改查的方法
PagingAndSortingRepository接口,继承Repository,有分页和排序的方法
也可以自己写JPQl,和HQL类似,用接口@Modifying,@Query
Spring Data JPA 实现的方法都是使用事务的。针对查询类型的方法,其等价于 @Transactional(readOnly=true)
增删改类型的方法,等价于 @Transactional
用JPQL的时候进行修改和删除的时候,需要@Transactional 显式指定事务属性
public interface SystemParametersDao extends Repository<SystemParameters,String>{ List<SystemParameters> findAll(); //JPQl,修改和删除需要用@Modifying注解,且调用的方法需要加事务 @Modifying @Query("update SystemParameters s set s.value = ?1 where s.key = ?2") void modifySystemParameters(String value, String key); //JPQl查找 @Query("select u from SystemParameters u where key like %:un%") List<SystemParameters> findByKey(@Param("un") String key); <S extends SystemParameters> Iterable<S> save(Iterable<S> entities); <S extends SystemParameters> S save(S entity); void delete(String id);}
- Spring Boot 下配置SpringDataJpa
- springboot下springdatajpa配置多数据源
- Spring boot下 Quartz 详细应用配置
- spring boot下redis的配置使用
- spring+springdatajpa+freemarker
- spring+springdatajpa+freemarker
- Spring+SpringMVC+Springdatajpa+Freemarker
- SpringDataJPA入门配置
- Spring Boot下配置MyBatis多数据源
- Spring boot 下Freemarker的注解方式配置
- Spring Boot下配置MyBatis多数据源
- Spring Boot下Druid连接池的使用配置分析
- Spring Boot下基于Profile动态替换配置信息
- spring boot下JedisCluster客户端的配置,连接Redis集群
- Spring Boot下配置MyBatis多数据源
- Spring Boot下Druid连接池的使用配置分析
- spring boot下JedisCluster客户端的配置,连接Redis集群
- Linux环境下Spring Boot项目内置Tomcat参数配置
- Activity应用及启动模式
- Android逐帧动画的简单使用-语音播放效果的实现
- Xutils——BitmapUtils单例实现
- uva 1583 Digit Generator
- IPV6基础知识
- Spring Boot 下配置SpringDataJpa
- 实训周报1-AlexNet论文全解读
- 如何安装配置Redis
- iOS的UIView和CALayer
- [仙人掌直径 单调队列 DP] BZOJ 1023 [SHOI2008]cactus仙人掌图
- mysql
- iOS GPUImage之GPUImageFilterGroup组合滤镜(5)
- C++Primer 第7章笔记整理
- 使用日本人的库QRCode编解码二维码