Kotlin整合Spring Boot实现数据库增删改查(spring data jpa版)

接上次的kotlin整合spring boot的mybatis版本,这次分享的内容也很精彩,现在spring data jpa也慢慢流行起来了,因此学习kotlin的时候也顺带写了spring data jpa版本的,下面就直接上代码分享给大家了

1 pom加入如下配置


    org.springframework.boot
    spring-boot-starter-data-jpa
2 springboot的主配置文件(配置数据源、日志、jpa)
server.port=8089
#DataBase DataSources
spring.datasource.url = jdbc:mysql://localhost:3306/debugxwz
spring.datasource.username = root
spring.datasource.password = 123456
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



logging.level.com.debug=debug

# 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
3 实体Entity

package com.debug.pojo

import javax.persistence.Entity
import javax.persistence.Table
import javax.persistence.GenerationType
import javax.persistence.GeneratedValue
import javax.persistence.Id

@Entity
@Table(name = "user")
data class UserInfo (
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	val id:Int?=null,
	val name:String?=null,
	val address:String?=null
)
4 DAO或Repository(CRUDRepository、PagingAndSortingRepository都可,根据实际需要选择)
package com.debug.dao

import com.debug.pojo.UserInfo
import org.springframework.data.repository.PagingAndSortingRepository
import org.springframework.data.repository.query.Param
import org.springframework.data.jpa.repository.Query
import org.springframework.data.jpa.repository.Modifying


interface UserDao:PagingAndSortingRepository {
    //根据id获取用户信息
    fun findById(id: Int): UserInfo
	
    @Query("select m from UserInfo m where m.name like %:name%")
    fun getUserInfoByName(@Param("name") name:String):List
	
    @Modifying
    @Query("update UserInfo m set m.name=:name where m.id=:id")
    fun updateMemberById(@Param("name")name:String,@Param("id")id:Int) 
   
    @Modifying
    @Query("delete from UserInfo m  where m.id=:id")
    fun deleteMemberById(@Param("id")id:Int) 
	
}
5  service层

package com.debug.service

import com.debug.pojo.UserInfo
import org.springframework.transaction.annotation.Transactional
import org.springframework.transaction.annotation.Propagation
import org.springframework.data.repository.query.Param

interface IUserService {
	
	fun findUserById(userId: Int): UserInfo
	fun getUserInfoByName(name:String):List
	fun updateMemberById(name:String,id:Int)
	fun deleteMemberById(id:Int) 
	
	
}

package com.debug.service.impl

import com.debug.service.IUserService
import javax.annotation.Resource
import com.debug.pojo.UserInfo
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import javafx.scene.control.Pagination
import org.springframework.transaction.annotation.Propagation
import com.debug.dao.UserDao

@Service(value="userSrvice")
open class UserService:IUserService{
	@Resource
    lateinit var userDao:UserDao
	
	override fun findUserById(userId: Int):UserInfo{
		return userDao.findById(userId)
	}
	
	override fun getUserInfoByName(name:String):List{
		return userDao.getUserInfoByName(name)
	}
	@Transactional(propagation=Propagation.REQUIRED)
	override fun updateMemberById(name:String,id:Int){
		return userDao.updateMemberById(name,id)
	}
	@Transactional(propagation=Propagation.REQUIRED)
	override fun deleteMemberById(id:Int) {
		return userDao.deleteMemberById(id)
	}
	
}

service层要注意处理下事务否则调用时会报错

6  controller的代码

package com.debug.controller

import org.springframework.web.bind.annotation.RestController
import javax.annotation.Resource
import com.debug.service.IUserService
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.ResponseBody
import com.debug.pojo.UserInfo
import javax.servlet.http.HttpServletRequest
import com.debug.service.impl.UserService


@RestController
class UserController {
	
    @Resource
    lateinit var userService: IUserService;
	
    @RequestMapping("/getById")
    @ResponseBody
    fun getUserById(req:HttpServletRequest):UserInfo {
	val id:Int=Integer.parseInt(req.getParameter("id"))
        val info:UserInfo=userService.findUserById(id)
        return info
    }
    @RequestMapping("/getUserInfoByName")
    @ResponseBody
    fun getUserInfoByName(req:HttpServletRequest):List {
	val name:String=req.getParameter("name")
        val info:List =userService.getUserInfoByName(name)
        return info
    }
	
    @RequestMapping("/updateMemberById")
    @ResponseBody
    fun updateMemberById(req:HttpServletRequest):String {
	val name:String=req.getParameter("name")
	val id:Int=Integer.parseInt(req.getParameter("id"))
        userService.updateMemberById(name,id);
        return "数据修改成功"
    }
	
    @RequestMapping("/deleteMemberById")
    @ResponseBody
    fun deleteMemberById(req:HttpServletRequest):String {
	
	val id:Int=Integer.parseInt(req.getParameter("id"))
        userService.deleteMemberById(id);
        return "数据删除成功"
    }
	
	
}
至此所有的代码编写完成

你可能感兴趣的:(Spring,Boot,Spring,Data,kotlin)