spring boot 快速开发-数据持久层
我常使用的数据层有mybatis和 jpa
mybatis 依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
配置
#实体类
public class User {
private String username;
private String password;
private String fullname;
private Timestamp date;
#省略get set方法
}
@JsonFormat(pattern="yyyy-MM-dd")
在get方法上会将日期类型转换为指定格式
#映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.demo.dao.UserDao">
<select id="getAllUser" resultType="com.demo.entiy.User">
select * from user order by date desc
</select>
<select id="getUserByUsername" resultType="com.demo.entiy.User">
select * from user where username = #{username}
</select>
</mapper>
#dao层
@Mapper(一定要加,否则会无法扫描到)
public interface UserDao {
List<User> getAllUser();
User getUserByUsername(String username);
}
#控制器
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
private UserDao userDao;
@RequestMapping(value = "/getUserAll", method = RequestMethod.GET)
public List<User> getUserAll(){
return userDao.getAllUser();
}
@RequestMapping(value = "/getUserByUsername", method = RequestMethod.GET)
public User getUserByUsername(@RequestParam @ApiParam(name="username",value="用户名",required=true)String username){
return userDao.getUserByUsername(username);
}
}
jpa 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
配置
#实体类
@Entity
public class User {
@Id
private String username;
private String password;
private String fullname;
private Timestamp date;
#省略get set方法
}
#因为使用注解 不需要使用xml映射文件
#dao层 继承 JpaRepository 如果是int型主键 则应该使用 Integer 否则会报错
public interface UserDao extends JpaRepository<User, String> {
# Jpa 默认属实现了findAll方法
User findByUsername(String username);
}
命名规则