当前位置: 首页 > article >正文

2.springboot配置jpa

1.pom依赖引入

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2.application.properties配置文件

server.port=8080
server.servlet.context-path=/jpalogging.level.com.yuchen.VOS.dao=debug
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver#配置mysql8.0,阿里连接池需要引入区域信息才能启动
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://abc.com:3306/springboot_jpa_demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Chongqing
spring.datasource.username=root
spring.datasource.password=123456#阿里druid连接池驱动配置信息
#初始化大小,最小,最大
spring.datasource.initialSize=2
spring.datasource.minIdle=2
spring.datasource.maxActive=15
#配置获取连接等待超时的时间
spring.datasource.maxWait=5000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
#配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
#打开PSCache,并且指定每个连接上PSCache的大小
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20#配置阿里数据源的扩展过滤器
#WallFilter:Druid防御SQL注入攻击的防火墙,会在jdbc底层执行时对sql语句进行审查,防止sql注入,并支持mysql,orcale等数据库的语法
#statFilter:开启监控界面的sql统计
spring.datasource.filters=stat,wall,log4j
#通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# JPA配置,驼峰命名是自动的
spring.jpa.database = MYSQL# 是否将执行的sql语句显示到控制台,正式环境建议关闭
spring.jpa.show-sql = true# Hibernate ddl auto 参数用来配置是否开启自动更新数据库表结构,可取create、create-drop、update、validate、none五个值
#create 每次加载hibernate时,先删除已存在的数据库表结构再重新生成;
#create-drop 每次加载hibernate时,先删除已存在的数据库表结构再重新生成,当sessionFactory关闭时也会先删除已存在的数据库表结构再重新生成
#update 只在第一次加载hibernate时自动生成数据库表结构,以后再次加载hibernate时根据model类自动更新表结构;
#validate 每次加载hibernate时,验证数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
#none 什么都不做
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#设置Hibernate使用的数据库方言
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

3.定义实体类

@Entity //用来标记该类是一个JPA实体类
@Table(name = "ums_user") //映射数据库表,name为数据库的表名
public class User implements Serializable {private static final long serialVersionUID = -679176727475076780L;@Id //定义记录的唯一标识@GeneratedValue(strategy = GenerationType.AUTO) //定义记录的生成规则private Long id;private String username;private String password;private String nickName;private Integer level;@Transient  //表示该字段不和数据库字段关联private Integer status;private Integer isDelete;@Column(name = "create_time", columnDefinition = "DATETIME")private Date createTime;@Column(nullable = true, columnDefinition = "decimal(11,2)")private BigDecimal tradeTotalMoney;//get、set省略
}

4.dao层继承 Repository<实体类型,主键id的类型>

public interface UserDao extends JpaRepository<User,Long> {//如果需要自己写sql,使用Query即可,@Query("select e.id as employeeId,e.name as employeeName,d.id as departmentId,d.name as departmentName from Employee e , Department d where e.id= ?1 and d.id= ?2")EmployeeDetail getEmployeeJoinDepartment(Long eid, Long did);
}

5.service层与实现类

public interface UserService {User save(User user);boolean delete(Long id);boolean update(User user);List<User> listAll();Page<User> list(Integer pageNo,Integer pageSize);User getUser(Long id);
}
@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;@Overridepublic User save(User user) {User save = userDao.save(user);return save;}@Overridepublic boolean delete(Long id) {userDao.deleteById(id);return false;}@Overridepublic boolean update(User user) {User save = userDao.save(user);return false;}@Overridepublic List<User> listAll() {return userDao.findAll();}@Overridepublic Page<User> list(Integer pageNo, Integer pageSize) {Pageable pageable = PageRequest.of(pageNo,pageSize);return userDao.findAll(pageable);}@Overridepublic User getUser(Long id) {try {return userDao.findById(id).get();}catch (NoSuchElementException e){return null;}}
}

6.controller层

@Api(tags = "用户管理")
@RequestMapping("/user")
@RestController
public class UserController {Logger log = LoggerFactory.getLogger(UserController.class);@Autowiredprivate UserService userService;@ApiOperation(value = "添加功能")@PostMapping(path = "/add")public Result add(@RequestBody User user){if(StringUtils.isEmpty(user.getUsername())){return Result.error500("参数错误",null);}log.info(user.toString());userService.save(user);return Result.ok("添加成功",null);}@ApiOperation(value = "删除功能")@DeleteMapping(path = "/delete")public Result delete(@RequestParam("id") String id){if(StringUtils.isEmpty(id)){return Result.error500("参数错误",null);}userService.delete(Long.valueOf(id));return Result.ok("删除成功",null);}@ApiOperation(value = "修改功能")@PutMapping(path = "/update")public Result update(User user){userService.update(user);return Result.ok("修改成功",null);}@ApiOperation(value = "分页查询")@GetMapping(path = "/list")public Result list(@RequestParam(value = "pageNo",defaultValue = "0") Integer pageNo,@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize){Page<User> list = userService.list(pageNo, pageSize);return Result.ok(null,list);}@ApiOperation(value = "详情")@GetMapping(path = "/details/{id}")public Result details(@PathVariable("id")Long id){User user = userService.getUser(id);if(user==null){return Result.error500("用户不存在",null);}return Result.ok("",user);}
}

7.分页查询测试打印如下
JPA Page类属性如下

{"status": 200,"message": null,"data": {"content": [{"id": 3,"username": "aaaa","createTime": null},{"id": 4,"username": "xxx","createTime": null}],"pageable": {"sort": {"sorted": false,"unsorted": true,"empty": true},"offset": 0,"pageSize": 10,"pageNumber": 0,"unpaged": false,"paged": true},"totalPages": 1,"totalElements": 2,"last": true,"size": 10,"number": 0,"sort": {"sorted": false,"unsorted": true,"empty": true},"numberOfElements": 2,"first": true,"empty": false},"time": "2020-09-15 16:48:24"
}
http://www.lryc.cn/news/2414412.html

相关文章:

  • php怎么弄钓鱼,QQ_PHP钓鱼源码
  • 探察MFC中框架宏(RUNTIME_CLASS等)的秘密
  • 极域电子教室—解控
  • 理清contactsprovider
  • Fireworks MX 2004 对象的变形(转)
  • Weblogic安装部署步骤
  • WIn10 64位安装windows Mobile 设备中心不能启动或自动退出
  • Linux命令之chmod命令
  • VC++常用数据类型及其操作详解
  • 【Linux】红帽子安装过程超详细(学生教学用)
  • OpenCV机器视觉-HSV颜色模型
  • 多线程同步的方法
  • 英文论文完成后如何快速修改润色 PaperBERT
  • 物联网云平台——物联网应用、硬件、产业生态
  • android 4.4 linux 内核版本,稳定内核版本和更新  |  Android 开源项目  |  Android Open Source Project...
  • TNS-12531: TNS:cannot allocatememory的解决办法
  • chm文件无法打开的解决方法,chm电子书显示“此程序无法显示网页”的解决办法
  • MySQL基础下篇[表的创建/约束的使用/事务和范式以及索引的使用]~
  • POP3/IMAP/SMTP邮箱服务器地址和端口总结
  • 解决提示无法使用内置管理员账户打开Microsoft Edge的方法
  • 异常测试之Socket网络异常
  • Dreamweaver8-chs序列号
  • Mysql 中的decmical类型
  • 【机房重构】——存储过程(Stored Procedure)
  • bat知识点3_for循环
  • asp.net中打开新窗口的多种方法
  • web渗透思路及总结
  • 系统文件srclient.dll损坏出现错误提示的解决办法
  • showImg jquery插件 图片展示 js
  • 创造性思维(Creative Thinking)