spring boot jpa使用笔记

作者: 献给记性不好的自己 | 来源:发表于2016-12-03 16:53 被阅读287次

    最近在写web项目,用的是spring boot,数据持久化使用jpa。

    一、pom.xml增加依赖

        <!--数据库相关配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    

    二、application.properties配置

    spring.jpa.database = MYSQL
    spring.jpa.show-sql = true
    spring.jpa.hibernate.ddl-auto = update
    spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
    spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
    

    三、配置JPA扫描类

    // 扫描repoitory包及其子包
    @EnableJpaRepositories(basePackages = { "com.xxxxxx.repository" })
    // 扫描Entity包及其子包
    @EntityScan("com.xxxxxx.bean.*")
    @Configuration
    public class JpaConfig {
    }
    

    四、配置对应持久化的实体类

    @Entity()
    @Table(name = "user")
    public class User implements Serializable {
        @Id
        @GeneratedValue(generator = "uuid")
        @GenericGenerator(name = "uuid", strategy = "uuid")
        @Column(name = "id")
        private String id;
        // 姓名
        @Column(name = "name")
        private String name;
        // 证件类型
        @Column(name = "id_type")
        private String id_type;
        // 证件号码
        @Column(name = "id_no")
        private String id_no;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getId_type() {
            return id_type;
        }
        public void setId_type(String id_type) {
            this.id_type = id_type;
        }
        public String getId_no() {
            return id_no;
        }
        public void setId_no(String id_no) {
            this.id_no = id_no;
        }
    

    五、配置repository类(dao层)

    //JpaRepository<User, String>中的String是主键的类型
    public interface UserRepository extends
            JpaRepository<User, String>,
            JpaSpecificationExecutor<User> {
        #1、简单条件查询:查询某一个实体类或者集合
        #  按照Spring data 定义的规则,查询方法以find|read|get开头 涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性以首字母大写其余字母小写为规定。
        #  使用And条件连接时
        #  条件的属性名称与个数要与参数的位置与个数一一对应
        public User findByNameAndId_no(String name,String id_no);
        #2、使用@Query自定义查询(Spring Data提供的)
        # 这种查询可以声明在Repository方法中,摆脱像命名查询那样的约束,将查询直接在相应的接口方法中声明,结构更为清晰,这是Spring data的特有实现。
        # ?1对应方法传参的第一个参数
        @Query("select u from User u where u.name= ?1")     
         public User findByName(String name); 
        # 也可以用第二种方式,使用Param("参数名"),而不用管顺序
        @Query("select u from User u where u.name = :beforename or u.name = :updatename")  
        public User findByLastnameOrFirstname(@Param("beforename") String beforename,@Param("updatename") String updatename); 
          
        #3、@Query与 @Modifying 执行更新操作 
        @Modifying 
        # ?1对应方法传参的第一个参数,?2代表第二个参数,以此类推
        @Query("update User u set u.name= ?1 where u.name= ?2")
        public int updateName(String name, String name); 
    }
        #4、spring data提供了默认的事务处理方式,即是所有查询皆为只读事务,增加、更新和删除对象声明有事务
        # 对于自定义的方法,如需改变spring data提供的事务默认方式
        # 可在自定义的方法上增加@Transactional注解即可
        @Transactional        
        public void delete(String name) {
        delete(findOne(name));
        }
    

    如有不详细,想到在补充。

    相关文章

      网友评论

        本文标题:spring boot jpa使用笔记

        本文链接:https://www.haomeiwen.com/subject/osjcmttx.html