SpringBoot中使用JPA

Hibernate针对MySQL8使用的方言是MySQLDialect,MySQL8Dialect被弃用。

JAP和DATASOURCE在同个Level上缩进,否则不起作用。

POM

		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-data-jpa</artifactId>
		    <version>3.0.6</version>
		</dependency>

		<dependency>
		    <groupId>mysql</groupId>
		    <artifactId>mysql-connector-java</artifactId>
		    <version>8.0.33</version>
		</dependency>

YML 文件

spring:
  datasource:  
    primary:
      jdbc-url: jdbc:mysql://localhost:3306/mybook?
                          useUnicode=true&characterEncoding=utf-8
      username: root
      password: ENC(BHwwNZhfnSS9QLRiWYLuMw==)
      driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    database-platform: org.hibernate.dialect.MySQLDialect
    database: mysql
    hibernate.ddl-auto: update
    generate-ddl: true
    show-sql: true
    open-in-view: true

PO

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name="bookorder1")
public class OrderPO{
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	public long id;
	@Column(nullable = false,length=32)
	public String orderName;
	@Column(length=512)
	public String orderDes;
	public Date createTime;
}

VO

@Data
@Component
@Slf4j 
@Builder
@AllArgsConstructor
@NoArgsConstructor
@JsonPropertyOrder(value= {"time","orderName"})
@ConfigurationProperties(prefix="bookorder")
@Validated
public class OrderVO {
	//@JsonIgnore
	public long id;
	public String orderName;
	public String orderDes;
	@JsonFormat(shape = JsonFormat.Shape.STRING, 
        pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8")
	public Date createTime;
	//@JsonProperty("buy")
	//@JsonInclude(JsonInclude.Include.NON_NULL)
	//public List<Buyer> buyer;
}

DAO

OrderRepository集成JpaRepository实现数据库访问,不需要自己实现DAO的编码。

public interface OrderRepository extends JpaRepository<OrderPO, Long> {

}

Service

代码示例,引用JPA的Respository访问数据库。

	@Resource
	private OrderRepository orderRepository;
	@Resource
	private Mapper mapper;
	
	@Override
	public OrderPO getOrderById(Long id) {
		//return orderDAO.findById(id,null);
		return orderRepository.getReferenceById(id);
	}

Controller

JPA【spring-boot-starter-data-jpa】和JDBC【spring-boot-starter-jdbc】在Controller层逻辑相同。

Dozer

通过Dozer实现VO-->PO的自动转换,不需要自己编码。

		<dependency>
		    <groupId>net.sf.dozer</groupId>
		    <artifactId>dozer</artifactId>
		    <version>5.4.0</version>
		</dependency>

 代码示例

	import org.dozer.Mapper;


    @Resource
	private Mapper mapper;	


    @Override
	@Transactional
	public void saveOrder(OrderVO orderVO) {
		//orderDAO.saveOrder(orderVO,primaryJdbcTemplate);
		//orderDAO.saveOrder(orderVO,secondaryJdbcTemplate);
		OrderPO orderPO = mapper.map(orderVO, OrderPO.class);
		orderRepository.save(orderPO);
	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值