SpringBoot笔记4---如何读写数据库之使用@Query注解来读写数据库

数据库配置以及相关依赖包的添加在《SpringBoot笔记3---如何读写数据库之使用CrudRepository中提供的方法来读写数据库》中已经详细说明,这里不赘述。本文在SpringBoot笔记3一文的基础上讲述如何通过@Query注解来读写数据库。


1 修改UserDao如下:

package com.gm.springboot_test.dao;

import java.util.List;

import javax.transaction.Transactional;

import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import com.gm.springboot_test.entity.User;

@Transactional
@Repository
public interface UserDao extends CrudRepository {
	@Query("from User where name = ?1")
	public List getByName(String name);
	
	@Query("select age from User where name = ?1")
	public List getAgeByName(String name);
	
	@Modifying
	@Query("update User set age = :age where name = :name")
	public void updateAge(@Param("name") String name, @Param("age") int newAge);
}

注意:当修改数据库时,需要使用@Modifying进行注解。


2 修改UserController类如下:

package com.gm.springboot_test.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.gm.springboot_test.dao.UserDao;
import com.gm.springboot_test.entity.User;

@Controller
@RequestMapping("/user")
public class UserController {
	@Autowired
	private UserDao userDao;
	
	@RequestMapping("/getAll")
	@ResponseBody
	public String getAll() {
		List userList = (List) userDao.findAll();
		
		String result = "";
		
		for (User user : userList) {
			result += user.toString() + "
"; } return result; } @RequestMapping("getByName") @ResponseBody public String getByName(String name) { List userList = userDao.getByName(name); String result = ""; for (User user : userList) { result += user.toString() + "
"; } return result; } @RequestMapping("getAgeByName") @ResponseBody public String getAgeByName(String name) { List ageList = userDao.getAgeByName(name); String result = ""; for (Integer age : ageList) { result += age + "
"; } return result; } @RequestMapping("updateAge") @ResponseBody public String updateAge(String name, int age) { userDao.updateAge(name, age); return "更新成功"; } }


你可能感兴趣的:(SpringBoot,SpringBoot,数据库)