springboot 用注解方式写增删改查的sql语句
时间: 2023-08-10 19:43:54 浏览: 91
Spring Boot使用JPA或MyBatis框架来操作数据库,这些框架支持使用注解的方式来编写SQL语句。下面分别介绍使用JPA和MyBatis的方式。
使用JPA的方式:
1. 首先需要定义一个实体类,使用@Entity注解声明它是一个实体类,使用@Id注解声明它的主键:
```java
@Entity
public class User {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
private String name;
private String email;
// 省略构造方法、getter和setter方法
}
```
2. 然后定义一个继承自JpaRepository的接口,它将自动提供一些基本的增删改查方法。可以使用其他注解来扩展这些方法,如@Query来自定义SQL语句:
```java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT u FROM User u WHERE u.email = ?1")
User findByEmail(String email);
}
```
3. 在控制器中使用@Autowired注解来注入UserRepository实例,然后就可以使用它提供的方法来进行增删改查操作了:
```java
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/")
public List<User> getAllUsers() {
return userRepository.findAll();
}
@PostMapping("/")
public User createUser(@RequestBody User user) {
return userRepository.save(user);
}
@GetMapping("/{id}")
public User getUserById(@PathVariable("id") Long id) {
return userRepository.findById(id).orElseThrow(() -> new UserNotFoundException(id));
}
@PutMapping("/{id}")
public User updateUser(@PathVariable("id") Long id, @RequestBody User user) {
User existingUser = userRepository.findById(id).orElseThrow(() -> new UserNotFoundException(id));
existingUser.setName(user.getName());
existingUser.setEmail(user.getEmail());
return userRepository.save(existingUser);
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable("id") Long id) {
User existingUser = userRepository.findById(id).orElseThrow(() -> new UserNotFoundException(id));
userRepository.delete(existingUser);
}
}
```
使用MyBatis的方式:
1. 首先需要定义一个Mapper接口,使用@Mapper注解声明它是一个MyBatis Mapper接口:
```java
@Mapper
public interface UserMapper {
@Select("SELECT * FROM users")
List<User> findAllUsers();
@Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})")
void insertUser(User user);
@Select("SELECT * FROM users WHERE id = #{id}")
User findUserById(Long id);
@Update("UPDATE users SET name=#{name}, email=#{email} WHERE id=#{id}")
void updateUser(User user);
@Delete("DELETE FROM users WHERE id=#{id}")
void deleteUser(Long id);
}
```
2. 在控制器中使用@Autowired注解来注入UserMapper实例,然后就可以使用它提供的方法来进行增删改查操作了:
```java
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/")
public List<User> getAllUsers() {
return userMapper.findAllUsers();
}
@PostMapping("/")
public User createUser(@RequestBody User user) {
userMapper.insertUser(user);
return user;
}
@GetMapping("/{id}")
public User getUserById(@PathVariable("id") Long id) {
return userMapper.findUserById(id);
}
@PutMapping("/{id}")
public User updateUser(@PathVariable("id") Long id, @RequestBody User user) {
user.setId(id);
userMapper.updateUser(user);
return user;
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable("id") Long id) {
userMapper.deleteUser(id);
}
}
```
注意,使用JPA或MyBatis的方式都需要在Spring Boot应用程序中配置相应的依赖和数据源。在配置文件中设置数据库连接信息和其他配置,以便框架可以正确地连接和操作数据库。
阅读全文