1.数据库设计
create table User(
u_id int auto_increment PRIMARY key,
u_name varchar(20),
u_pass varchar(20)
)
insert into User(u_name,u_pass) values("zhao",123456),("zhao1","112233")
2.创建一个Maven项目
给pom.xml文件添加依赖(数据源配置文件省略)
<!--添加MySQL数据库依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--添加Hibernate的jpa依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
3.entity(User)
@Entity
public class User {
@Id
@GeneratedValue
private Integer id;
private String u_name;
private String u_pass;
//省略getter和setter方法
}
4.dao(UserRepository)
@Repository
public interface UserRepository extends JpaRepository<User,Integer> {
//自定义修改
@Modifying //可以通过自定义的 JPQL 完成 UPDATE 和 DELETE 操作。
@Transactional
@Query("update User u set u.u_pass = :u_pass where u.id = :id")
int updateUser(@Param("u_pass") String u_pass, @Param("id") Integer id);
//自定义查询
@Query("select t from User t where t.u_name = :u_name and t.u_pass= :u_pass")
User selectUser(@Param("u_name") String u_name,@Param("u_pass")String u_pass);
}
5.controller(userController)
@RestController
public class UsersController {
@Autowired
UsersRepository usersRepository;
/**
* Hibernate自带添加的方法
* @param users
*/
@RequestMapping("save")
public void save(User users){
usersRepository.save(users);
}
/**
* Hibernate自带根据id删除的方法
* @param id
*/
@RequestMapping("del")
public void del(Integer id){
usersRepository.deleteById(id);
}
/**
* Hibernate实体类删除,每一个属性必须要与实体类中的属性一致
* @param user
*/
@RequestMapping("user")
public void delUser(User user){
usersRepository.delete(user);
}
/**
* Hibernate自带的查询全部的方法
* @return
*/
@RequestMapping("find")
public List<User> find(){
List<User> userList = usersRepository.findAll();
return userList;
}
/**
* Hibernate自带的根据id查询详情
* Optional,Java8新特性,使用Optional可以避免显示的null值判断
* @param id
* @return
*/
@RequestMapping("findById")
public Optional<User> findById(Integer id){
Optional<User> user = usersRepository.findById(id);
return user;
}
/**
* Hibernate自带修改信息:修改实体类中的全部信息,如果有实体类中的属性没写
* 则会为null
* @param user
*/
@RequestMapping("saves")
public void saves(User user){
usersRepository.save(user);
}
/**
* 自己定义:用自己定义的修改方法根据id修改指定的属性,其它属性的值不变
* @param u_pass
* @param id
*/
@RequestMapping("update")
public void update(String u_pass,Integer id){
usersRepository.updateUser(u_pass,id);
}
/**
* 自己定义:根据自己定义的u_name和u_pass来查询
* @param u_name
* @param u_pass
* @return
*/
@RequestMapping("select")
public User select(String u_name,String u_pass){
User users = usersRepository.selectUser(u_name, u_pass);
return users;
}
}
总结:Hibernate有自己封装的增删改查的方法,同时也支持自己编写的hql语句,自定义的增删改查的方法。