hibernate

基于javax.validation自定义日期范围校验注解

怎甘沉沦 提交于 2020-07-28 02:01:53
实际项目中经常需要对传入的日期时间进行判断,如是否为一年内,几个月之内,几天前,几天之内等等的需求。如要求前端传入的日期是要为当前日期一年内的某个日期,基于jdk8的LocalDateTime or LocalDate等常用的做法如下: // 前端传字符串如‘2020-07-13 09:09:09’ springmvc接收并转换为LocalDateTime类型 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; LocalDateTime now = LocalDateTime.now(); // jdk8校验传入日期是否为一年内 boolean flag = endTime.isBefore(now.plusYears(1)) 基于上述的做法通常是比较通用的模式,如果每个日期时间都重复如此判断,略微繁琐,于是可以通过javax.validation的自定义校验注解来作用于实体属性上,借住hibernate-validate与springmvc结合来解决此类日期时间的范围校验。 DateTimeRange.java 用于LocalDateTime or

Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore

荒凉一梦 提交于 2020-07-27 22:01:26
Java操作数据库的方式用很多可以用JDBC自己去处理 也可以用通过Spring Data JPA 中封装的Hibernate来完成 添加相关的配置 Spring.datasource.url=jdbc:mysql: // 192.168.0.233:3306/test1?useSSL=false Spring.datasource.username= uoso Spring.datasource.password = uosotech_123 Spring.datasource.driver - class -name= com.mysql.jdbc.Driver Spring.jpa.properties.hibernate.hbm2ddl.auto = update Spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect Spring.jpa.show -sql= true 接下来通过.NetCore 中的EFCore 来对比下 两种语言操作数据库的方式 Java JDBC vs .NetCore ADO.NET 这些都是操作数据库底层的东西下面我们来看下有什么区别 先看下Java JDBC代码 下面说下步骤 首先 DriverManager

JavaBeginnersTutorial 中文系列教程·翻译完成

风格不统一 提交于 2020-07-27 15:11:32
原文: JavaBeginnersTutorial 协议: CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 在线阅读 ApacheCN 学习资源 目录 JavaBeginnersTutorial 中文系列教程 Java 教程 Java 教程 – 入门 Java 的历史 Java 基础知识:Java 入门 jdk vs jre vs jvm public static void main(string args[]) 说明 面向初学者的 Java 类和对象教程 Java 构造器 使用 Eclipse 编写 Hello World 程序 执行顺序 Java 中的访问修饰符 Java 中的非访问修饰符 Java 中的数据类型 Java 中的算术运算符 Java 语句初学者教程 用 Java 创建对象的不同方法 内部类 字符串构建器 Java 字符串教程 Java 教程 – 变量 Java 中的变量 Java 中的局部变量 Java 中的实例变量 Java 引用变量 变量遮盖 Java 教程 – 循环 Java for 循环 Java 教程 – 异常 Java 异常教程 异常处理 – try-with-resources 语句 Java 异常处理 – try catch 块 Java 教程 – OOPS 概念 Java 重载 Java

Postgis 地理函数使用

你。 提交于 2020-07-27 15:07:51
最近使用postgis的地理函数做一些区域查询判断,SQL代码如下: <sql id="region_condition_geo"> <if test="geog != null"> <if test="geog.type == 'circle' "> AND ST_Intersects ( ST_Buffer (ST_GeomFromText ('POINT(${geog.centerString})', ${geog.srid}) :: geography, ${geog.radiusMetre} ) :: geography, position ) </if> <if test="geog.type == 'rectangle' "> and ST_Intersects(ST_GeomFromText('POLYGON((${geog.pointArr}))', ${geog.srid})::geography, position ) </if> <if test="geog.type == 'polygon' "> and ST_Intersects(ST_GeomFromText('POLYGON((${geog.pointArr}))', ${geog.srid})::geography, position ) </if> </if> </sql> 执行时报错: bad

对象引用未保存的瞬态实例-在刷新之前保存瞬态实例

一笑奈何 提交于 2020-07-27 04:23:21
问题: 使用Hibernate保存对象时收到以下错误 object references an unsaved transient instance - save the transient instance before flushing 解决方案: 参考一: https://stackoom.com/question/9f3y/对象引用未保存的瞬态实例-在刷新之前保存瞬态实例 参考二: https://oldbug.net/q/9f3y/object-references-an-unsaved-transient-instance-save-the-transient-instance-before-flushing 来源: oschina 链接: https://my.oschina.net/u/4438370/blog/4285688

java书籍推荐[转]

心不动则不痛 提交于 2020-07-26 23:26:16
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。下面就按照学习顺序,给大家推荐下面这些JAVA书籍。 一、Java编程入门类,选择大于努力,入门太重要。 对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是“囫囵吞枣不求甚解”,先对 Java熟悉起来再说。用很短的时间快速过一遍Java语法,连懵带猜多写写代码,要“知其然”。 1.《JAVA编程思想》在有了一定的Java编程经验之后,你需要“知其所以然”了。这个时候《Java编程思想》是一本让你知其所以然的好书,它 对于基本的面向对象知识有比较清楚的交待,对Java基本语法,基本类库有比较清楚的讲解,可以帮你打一个良好的Java编程基础。这本书的缺点是实在太 厚,也比较罗嗦,不适合现代人快节奏学习,因此看这本书要懂得取舍,不是每章每节都值得一看的,挑重点的深入看就可以了。推荐一个java群,名字是java从入门到精通,第一组是二二零,第二组是一四二,第三组是九零六,里面有大量视频资料,欢迎java爱好者加入学习。 2.《Agile Java》中文版,这本书一大特点是以单元测试和TDD来贯穿全书的,在教你Java各种重要的基础知识的 过程中,潜移默化的影响你的编程思维走向敏捷,走向TDD。另外这本书成书很新

第1章 MyBatis简介

China☆狼群 提交于 2020-07-25 06:35:58
MyBatis介绍 MyBatis是支持 定制化SQL 、存储过程以及高级映射的优秀的 持久层框架 。 MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。 MyBatis可以使用简单的 XML 或 注解 用于配置和原始映射,将 接口和Java的POJO 映射成数据库中的记录。 推荐使用XML而不是注解。 MyBatis历史 原是Apache的一个开源项目iBatis。 2010年6月这个项目由Apache Software Foundation迁移到了Google Code,随着开发团队转投Google Code 旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。 iBatis一词来源于“internet”和“abatis”的组合,是一个 基于Java的持久层框架 。iBatis提供的持久层框架包括SQL Maps和DAO。 为何要用MyBatis MyBatis是一个 半自动化 的持久化层框架。 JDBC SQL夹在Java代码块里,耦合度高导致硬编码内伤。 维护不易且实际开发需求中SQL是有变化,频繁修改的情况很常见。 Hibernate和JPA 长难复杂SQL,对于Hibernate而言处理也不容易。 内部自动生产的SQL,不容易做特殊优化。 基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。

你写得API接口代码这么差,难道不能对返回格式统一处理一下吗?

限于喜欢 提交于 2020-07-25 00:22:14
随着互联网各岗位精细化分工的普及,出现了很多的系统架构设计,比如常见的前后端分离架构,后端提供接口给前端,前端根据接口的数据进行渲染,大家各执其职,效率也非常的高,但是随着接口的增加,如果不统一的规范就会额外的增加大量的沟通成本以及学习成本,对管理者而言是非常的不利。 为此,我在这篇文章分享给大家一个Java生鲜电商平台中如何返回统一格式的API的整体架构设计。 一般系统的大致整体架构图如下: 需要说明的是,有些小伙伴会回复说,这个架构太简单了吧,太low了,什么网关啊,缓存啊,消息中间件啊,都没有。因为这篇主要介绍的是API接口,所以我们聚焦点,其他的模块小伙伴们自行去补充。 接口交互 前端和后端进行交互,前端按照约定请求URL路径,并传入相关参数,后端服务器接收请求,进行业务处理,返回数据给前端。 针对URL路径的restful风格,以及传入参数的公共请求头的要求(如:app_version,api_version,device等),老顾这里就不介绍了,小伙伴们可以自行去了解,也比较简单。 后端服务器如何实现把数据返回给前端? 返回格式 后端返回给前端我们一般用JSON体方式,定义如下: { #返回状态码 code:integer, #返回信息描述 message:string, #返回值 data:object} CODE状态码 code返回状态码

MyBatis常见面试题和答案

末鹿安然 提交于 2020-07-24 12:25:40
MyBatis是什么? MyBatis 是一款持久层框架,一个半 ORM(对象关系映射)框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 ORM是什么 ORM(Object Relational Mapping),对象关系映射,是一种为了解决关系型数据库数据与简单Java对象(POJO)的映射关系的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系型数据库中。 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里? Hibernate属于全自动ORM映射工具,使用Hibernate查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。 而Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成,所以,称之为半自动ORM映射工具。 JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的? 1、数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。 解决:在mybatis

spring 框架的xml文件如何读取properties文件数据

自古美人都是妖i 提交于 2020-07-23 23:39:45
spring 框架的xml文件如何读取properties文件数据 第一步:在spring配置文件中 注意:value可以多配置几个properties文件 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>/db.properties</value> </list> </property> </bean> 第二步: 在src目录下面建立db.properties文件 user=sa password=sa driver=com.microsoft.sqlserver.jdbc.SQLServerDriver url=jdbc:sqlserver://localhost:1433;databaseName=DB1 第三步: 在spring的配置文件中通过EL表达式的形式调用 ${user} <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3