今天继续学习JPA,但是IDE工具变为了IntelliJ IDEA,其实多数我还是更喜欢Eclipse系列,但是Android Studio什么的,多Get一个技能也不是坏事。
1 新建Spring Boot工程
Next ,然后填写项目信息:
看上面,我把语言改成了Kotlin,因为我最近在学习Kotlin,所以,你又get到新技能了。继续Next
依赖,我们这里选择了JPA和一种数据库驱动。Next
项目名称和位置,这里项目创建完毕,点击Finisth等待项目初始化完毕(主要是下载模版和依赖)。 除了代码由java改为kotlin,其他没有变化。
2 新建实体 我们先建一个包,名为cn.techcave.demo.jpa.domain,在此包下通过新建一个kotlin Clasee来创建名为Record的实体,具体代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 package cn.techcave.demo.jpa.domain import javax.persistence.Entity import javax.persistence.GeneratedValue import javax.persistence.GenerationType import javax.persistence.Id @Entity data class Record( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long? = null, var name:String? = null, var value: Double? = null ) { }
3 新建Repository 对于Repository,我的理解就是dao,代码说话:
1 2 3 4 5 6 7 8 9 package cn.techcave.demo.jpa.repository import cn.techcave.demo.jpa.domain.Record import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @Repository interface RecordRepo :JpaRepository<Record, Long> { }
超简单好不好,我都不想说话了。
4 新建一Service吧 好了,默默的看代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 package cn.techcave.demo.jpa.service import cn.techcave.demo.jpa.domain.Record import cn.techcave.demo.jpa.repository.RecordRepo import org.springframework.beans.factory.annotation.Autowired import org.springframework.data.domain.Example import org.springframework.stereotype.Service import org.springframework.data.domain.ExampleMatcher import org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers.startsWith @Service class RecordService { @Autowired lateinit var recRepo: RecordRepo fun qbeRecord(rec: Record): Record? { val matcher = ExampleMatcher.matching() .withIgnorePaths("value")//忽略value属性 .withIncludeNullValues()//包含空值 .withMatcher("name", startsWith().ignoreCase())//字段name,匹配开始,忽略大小写 val example = Example.of(rec, matcher) return recRepo.findOne(example) } fun findOne(id:Long): Record? { return recRepo.findOne(id) } fun newRecored(rec: Record) { recRepo.save(rec) } }
qbeRecord方法就是Query By Example 的使用例子