新建spring boot 项目 然后在pom.xml 导入相关的坐标
<dependencies>
<!--jpa-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--freemarler-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!--jdbc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--连接池 德鲁伊-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
</dependencies>
在properties 文件中进行相关的配置
# 连接池类型
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 用户名
spring.datasource.username=ws
# 密码
spring.datasource.password=1
# 驱动
spring.datasource.dbcp2.driver-class-name=com.mysql.jdbc.Driver
# url
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/redis?serverTimezone=GMT%2B8
# jpa 配型 数据库类型
spring.jpa.database=mysql
# 运行时输出sql 语句
spring.jpa.show-sql=true
# 建表策略
spring.jpa.hibernate.ddl-auto=update
创建Controller 层 ,service 层 和 相应的实体 实体的结构如下
@Data //get set 方法 lombok插件
@Entity // 实体
@Table(name="user") // 和实体类中的哪个表对应
@AllArgsConstructor // 有参构造
@NoArgsConstructor // 无参构造
public class User {
@Id //主键
@GeneratedValue(strategy = GenerationType.IDENTITY) // 主键自增
private Integer userId;
@Column(name="user_name") //对应数据库列名
private String userName;
@Column(name="user_pass")
private String userPass;
@Column(name="user_date")
private Date userDate;
}
持久层接口实现 JpaRepository 接口
public interface UserDao extends JpaRepository<实体名,主键类型>
CrudRepository为我们提供了一下方法:save,saveAll,findById,existsById,findAll,findAllById,deleteById,delete,deleteAll,因此简单的增删改查不需要在持久层写代码
springdata 自定义方法
按照 Spring Data 的规范,查询方法以 find | read | get开头, 涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性以首字母大写。
在接口中只需要声明符合规范的方法,即拥有对应的功能,如下表所示为方法中支持的关键字:
以下方法写在dao层接口
主要讲的是@query 自定义查询sql 语句:
需要在@service 层 添加@Transactional 开始事务注解
删除修改需要添加 @Modifying 注解 否则会报错
@Modifying
@Query("delete from User where userId = ?1")
void deleteByUserId(Integer id);
查询 则不需要 @modifying 注解
@Query("select u.userPass from User u where u.userName = ?1")
String findByname(String name);