网站建设全流程,宁波市节约型机关建设考试网站,技术支持::天空网络-临汾做网站,济宁哪里有网站建设最近做项目的过程中#xff0c;在数据库方面遇到了两个问题#xff0c;一是在插入一条数据的时候需要将该条数据的主键返回、二是根据时间区间进行查询时某一天的数据查询不到#xff0c;在此总结记录一下。1、如何在插入一条数据的同时将主键返回在实体类的映射文件 …最近做项目的过程中在数据库方面遇到了两个问题一是在插入一条数据的时候需要将该条数据的主键返回、二是根据时间区间进行查询时某一天的数据查询不到在此总结记录一下。1、如何在插入一条数据的同时将主键返回在实体类的映射文件 Mapper.xml 中这样写insert into user(userName,password,comment)values(#{userName},#{password},#{comment})useGeneratedKeystrue表示给主键设置自增长keyPropertyuserId表示将自增长后的Id赋值给实体类中的userId字段parameterTypecom.ue.entity.User这个属性指向传递的参数实体类注意中是没有resultType属性的不要乱加实体类中uerId要有getter() and setter()方法如果在数据库中已经设置了主键自增则可以在 Mapper.xml 中这样写SELECT LAST_INSERT_ID()INSERT INTO t_product(productName,productDesrcible,merchantId)values(#{productName},#{productDesrcible},#{merchantId})中没有resultType属性但是标签是有的orderAFTER 表示先执行插入语句之后再执行查询语句,可设置为BEFORE或AFTER;如果设置为BEFORE,那么它会首先选择主键,设置keyProperty然后执行插入语句;如果设置为AFTER,那么先执行插入语句,然后是selectKey元素;这和Oracle数据库相似,可以在插入语句中嵌入序列调用keyPropertyuserId表示将自增长后的Id赋值给实体类中的userId字段SELECT LAST_INSERT_ID()表示MySQL语法中查询出刚刚插入的记录自增长Id实体类中productId要有getter() and setter()方法上述两种方式都是在执行插入语句后将查询到的主键封装进了parameterType中的参数实体类中所以直接用该参数实体的get()方法就可以将主键取出来2、MySQL根据时间区间进行查询时某一天的数据查询不到的问题例如SELECT * FROM 表名 WHERE 开始时间字段名 BETWEEN 2019-05-01 AND 2019-06-14发现6月14号的数据没有出来因为between……and……是左闭右开即[a,b)即包含a的值不包含b的值将上面的SQL修改成下面的语句即可将原来的日期加上一天select * from 表名 where 字段名 BETWEEN 2019-05-01 and DATE_ADD(2019-06-14,INTERVAL 1 DAY)即使是用和也是跟用between......and......的效果一样的也需要将原来的日期加上一天如下是mapping.xml文件中的片段AND 开始时间字段名 #{前台传的值}AND 结束时间字段名 DATE_ADD(#{前台传的值},INTERVAL 1 DAY)---------------------