使用数据库是开发基本应用的基础。借助于开发框架,我们已经不再编写原始的访问数据库的代码,也不用调用JDBC或者连接池等诸如此类的被称作为底层的代码了。spring boot包含了一个功能强大的资源库,为使用spring boot的开发者提供了更加简便的接口进行访问。
一、使用MySQL:
对于传统关系型数据库来说,spring boot使用JPA资源库来实现对数据库的操作,JPA就是为POJO提供持久化的标准规范,即将java的普通对象通过对象关系映射ORM持久化到数据库中。
1、MySQL依赖配置:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> </dependencies>
2、实体建模:
首先创建一些普通对象,用来与数据库的表建立映射关系,然后使用JPA对数据库进行增删改查等存取操作。
@Entity @Table(name = "user") public class User implements java.io.Serializable{@Id @GeneratedValue(strategy = GenerationType.IDENTITY)private Long id; private String name; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date createdate; public User() {}public Long getId() {return id; }public void setId(Long id) {this.id = id; }public String getName() {return name; }public void setName(String name) {this.name = name; }public Date getCreatedate() {return createdate; }public void setCreatedate(Date createdate) {atedate = createdate; } }
3、实体持久化
以上已使用普通对象(POJO)与数据库建立映射关系(ORM),接下来使用JPA实现持久化。
User实体使用JPA进行持久化如下所示。它是一个接口,并继承于JPA资源库JpaRepository接口,使用注解@Repository将这个接口也定义为一个资源库,使他能被其他程序引用,并为其他程序提供存取数据库的功能。
@Repository public interface UserRepository extends JpaRepository<User, Long> {User findByNameLike(String name); User readByName(String name); List<User> getByCreatedateLessThan(Date star); }这样就实现存取数据库的功能了,现在可以对数据库进行增删改查、分页查询、指定排序的字段等操作了。
使用JPA不需要对接口有任何实现的代码,也不需要SQL语句。JpaRepository继承于PagingAndSortingRepository,提供了分页和排序功能,PagingAndSortingRepository继承于CrudRepository,提供了简单的增删改查功能。
JPA还提供了一些自定义声明方法的规则,如,findBy、readBy,getBy作为方法名的前缀,拼接实体类中的属性字段,首字母大写,并可选拼接一些SQL查询关键字来组合成一个查询方法。如上面代码。
4、测试验证:
增加一个JPA配置类,其中@EnableTransactionManagement 启用了JPA的事务管理;@EnableJpaRepositories启用了JPA资源库并指定了上面定义的接口资源库的位置;@EntityScan指定了定义实体的位置,他将导入我们定义的实体。
@Order(Ordered.HIGHEST_PRECEDENCE) @Configuration @EnableTransactionManagement(proxyTargetClass = true) @EnableJpaRepositories(basePackages = "dbdemo.**.repository") @EntityScan(basePackages = "dbdemo.**.entity") public class JpaConfiguration {@Bean PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor(){return new PersistenceExceptionTranslationPostProcessor(); }}
需要本地安装MySQL数据库,之后创建一个数据库,可以自定义命名为“shenchong”,配置密码123456。数据库的表结构不用创建,在程序运行的时候将会按照实体的定义自动创建。
然后在l中添加配置,用来设置数据源和JPA的工作模式:
spring: datasource: url: jdbc:mysql://localhost:3306/shenchong?useSSL=falseusername: rootpassword: 123456jpa: database: MYSQL show-sql: true #Hibernate ddl auto (validate|create|create-drop|update) hibernate: ddl-auto: update naming-strategy: org.hibernate.cfg.ImprovedNamingStrategyproperties: hibernate: dialect: org.hibernate.dialect.MySQL5Dialect
5、编写测试程序:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {JpaConfiguration.class}) public class MysqlTest {private static Logger logger = Logger(MysqlTest.class); @Autowired UserRepository userRepository; @Before public void initData(){userRepository.deleteAll(); User user = new User(); user.setName("user"); user.setCreatedate(new Date()); userRepository.save(user); Id()); }@Test public void findPage(){Pageable pageable = new PageRequest(0, 10, new Sort(Sort.Direction.ASC, "id")); Page<User> page = userRepository.findAll(pageable); Null(page); for(User user : Content()) {logger.info("====user==== user name:{}",Name()); }}
本文发布于:2024-02-05 00:40:02,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170720096861365.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |