引入依赖
<dependency>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
application.properties配置:
spring.datasource.url = jdbc:mysql://localhost:3306/test
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10
### Java Persistence Api
# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update
# Naming strategy
#[org.hibernate.cfg.ImprovedNamingStrategy #org.hibernate.cfg.DefaultNamingStrategy]
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# stripped before adding them to the entity manager)
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
实体类:
如何持久化呢?
1、使用@Entity进行实体类的持久化操作,当JPA检测到我们的实体类当中有@Entity 注解的时候,会在数据库中生成对应的表结构信息。
如何指定主键以及主键的生成策略?
2、使用@Id指定主键.
使用代码@GeneratedValue(strategy=GenerationType.AUTO)
指定主键的生成策略,mysql默认的是自增长。
dao接口:
public interface CatRepository extends CrudRepository<Cat, Integer>{
}
service事务绑定:使用@Transactional进行事务的绑定.
有这么几点需要强调下:
1. Repository是一个空接口,即是一个标记接口;
2. 若我们定义的接口继承了Repository,则该接口会被IOC容器识别为一个Repository Bean纳入到IOC容器中,进而可以在该接口中定义满足一定规范的方法。
3. 实际上也可以通过@RepositoryDefinition,注解来替代继承Repository接口。
4. 查询方法以find | read | get开头;
5. 涉及查询条件时,条件的属性用条件关键字连接,要注意的是条件属性以首字母大写。
6.使用@Query注解可以自定义JPQL语句实现更灵活的查询。
@Query("from Cat where catName=:cn")
public Cat findMyCatName(@Param("cn")String catName);
jdbcTempl
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
如果在JPA已经加入的话,则可以不用引入以上的配置。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
那么只需要在需要使用的类中加入:
@Resource
private JdbcTemplate jdbcTemplate;
@Repository
public class CatDao {
@Resource
private JdbcTemplate jdbcTemplate;
public Cat selectByCatName(String catName){
/**
* 1、定义一个Sql语句;
* 2、定义一个RowMapper.
* 3、执行查询方法.
*/
String sql = "select *from cat where cat_name=?";
RowMapper<Cat> rowMapper = new BeanPropertyRowMapper<>(Cat.class);
Cat cat = jdbcTemplate.queryForObject(sql, new Object[]{catName}, rowMapper);
return cat;
}
}