mysql 5.6 关于一个时间字段的数据更新引发的sql异常

数据库字段end_date 为timestamp类型 我发现更新到2038年份的日期就会报错 报错信息如下:

Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '2038-02-25 15:09:03' for column 'end_date' at row 1


The error may involve UsersMapper.UpdateCodes-Inline
The error occurred while setting parameters
SQL:
UPDATE users set codes=?,end_date=date_add(IFNULL(end_date,NOW()), interval ? DAY),type=1,begin_date=NOW() WHERE id=?


Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '2038-02-25 15:09:03' for column 'end_date' at row 1

1个回答

看你用的是什么类型,对于32bit存储的timestamp,2038年会超过最大值上溢。换支持的类型

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复鱼被吃了: 也可以是64bit
8 个月之前 回复
qy_0626
鱼被吃了 我明白了 十分感谢:)
8 个月之前 回复
qy_0626
鱼被吃了 回复贵阳挖掘机马善福自备车辆专业挖游泳池: 我明白了 刚才没理解什么意思,您是指timestamp是一种32bit存储的数据类型 对吗
8 个月之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复鱼被吃了: 看你end_date这个数据类型
8 个月之前 回复
qy_0626
鱼被吃了 请教一下,什么是32bit存储的timestamp,我该如何看这个类型?
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mysql5.6以下怎么查询指定字段中json中的值
数据库中有个order_collection_fee字段,这个字段中是以一个json:{"serfee":0.015,"fee":54}怎么可以查询到json里serfee的值;mysql是5.6以下的,表名ods_odsers
mysql不走时间字段的索引
where条件中有三个字段的条件,每个字段都有mysql普通索引,但是expalin结果显示时间字段索引没有生效,调换条件顺序依旧无效,麻烦大神们解答一下。 ![图片说明](https://img-ask.csdn.net/upload/202001/16/1579159063_535843.jpg) ``` EXPLAIN SELECT * FROM sys_data_5min_zl WHERE data_user = '2ec29aff-75f3-4a1a-972f-f27fd6099515' AND sb_date BETWEEN '2020-01-03' AND '2020-01-04' AND data_sb ='4eefa3ca-215b-43f6-aaa2-ae16abe764e2' ``` ![图片说明](https://img-ask.csdn.net/upload/202001/16/1579159389_108182.png)
【求助】MySQL8.0根据银行流水日记账统计日报表的数据库设计方案。
如题,该需求为财务系统常见的日报表、余额表等报表查询统计,如何设计性能良好的查询方案(因获取不到财务软件的数据库,未能参考)。 方案需求说明:因流水数据较大,需考虑查询的性能。可新增其他表、辅助字段、触发器、索引优化等,MySQL版本为8.0新版,可使用窗口函数等特性 具体情况: 1、数据表结构(表字段使用中文只是为了粗暴地阅读,请忽略。。。): **流水表flows:** ![图片说明](https://img-ask.csdn.net/upload/201908/25/1566706255_179390.png) **2、需求的查询:2019-8-11至2019-8-12日的资金日报表,期初余额为截至10日当天的余额,期末余额为12日当天的余额** ![图片说明](https://img-ask.csdn.net/upload/201908/25/1566706278_692101.png) 流水表SQL ``` -- ---------------------------- -- Table structure for flows -- ---------------------------- DROP TABLE IF EXISTS `flows`; CREATE TABLE `flows` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `单位` varchar(255) DEFAULT NULL, `银行账户` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, `日期` date DEFAULT NULL, `收入` decimal(18,2) DEFAULT NULL, `支出` decimal(18,2) DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Records of flows -- ---------------------------- INSERT INTO `flows` VALUES ('1', 'A', 'A01', '2019-07-15', '300.00', '0.00'); INSERT INTO `flows` VALUES ('2', 'A', 'A01', '2019-07-30', '0.00', '120.00'); INSERT INTO `flows` VALUES ('3', 'A', 'A01', '2019-08-01', '0.00', '70.00'); INSERT INTO `flows` VALUES ('4', 'A', 'A01', '2019-08-03', '99.00', '0.00'); INSERT INTO `flows` VALUES ('5', 'A', 'A01', '2019-08-11', '0.00', '77.00'); INSERT INTO `flows` VALUES ('6', 'A', 'A01', '2019-08-22', '0.00', '55.00'); INSERT INTO `flows` VALUES ('7', 'A', 'A01', '2019-08-25', '88.00', '0.00'); INSERT INTO `flows` VALUES ('8', 'A', 'A01', '2019-08-26', '0.00', '90.00'); INSERT INTO `flows` VALUES ('9', 'A', 'A02', '2019-07-02', '60.00', '0.00'); INSERT INTO `flows` VALUES ('10', 'A', 'A02', '2019-07-30', '0.00', '35.00'); INSERT INTO `flows` VALUES ('11', 'B', 'B01', '2019-08-10', '365.00', '0.00'); INSERT INTO `flows` VALUES ('12', 'B', 'B01', '2019-08-12', '98.00', '0.00'); ```
帮忙判断下这种业务场景适合使用什么类型的数据库
1. 共有约70个业务. 2. 这些业务中约有8个公共字段 3. 每个业务除公共字段外还有5-20个与其他业务不同的字段 4. 比如 业务 1 有字段如下 公共字段(渠道, 大小..) 自有字段 : 姓名, 身份证, 性别.. 业务 2 有字段如下 公共字段(渠道, 大小..) 自由字段 : 颜色, 长度, 宽度... 5. 目前的解决方案是一个业务放到一张表中, 只统计了五个业务, 使用了五张表 但随着业务量增多表的数量也将增多到70个 6. 使用mongodb这种nosql的数据库可否 ? 前辈说Nosql只适合简单数据模型的数据 7. 或者hadoop等..? PS. 每天各种业务加起来的数据量约5万条.
如何在SQLServer中将包含日期时间类型的数据离整点正负5分钟的时间分到同一组内
时间 PM2.5 PM10 CO NO2 SO2 O3 风速 压强 降水量 温度 湿度 2018/11/14 10:02 50 98 0.8 62 15 46 0.5 1020.6 89.8 15 65 2018/11/14 10:57 43 87 0.7 55 16 59 0.9 1020 89.8 17 57 2018/11/14 10:58 41 83 0.8 55 15 56 2 1019.9 89.8 17 57 2018/11/14 11:02 41 81 0.7 46 15 58 0.7 1019.7 89.8 17 58 2018/11/14 11:59 46 91 0.8 43 16 67 1.4 1018.5 89.8 18 52 2018/11/14 12:00 46 89 0.7 41 16 70 1.5 1018.5 89.8 18 52 2018/11/14 12:04 43 84 0.8 40 15 74 1.2 1018.5 89.8 18 53 2018/11/14 12:58 42 85 0.7 46 15 63 1.6 1018 89.8 18 50 。。。 这张表中第一个字段“时间”内有很多时间数据离得太近。 比如: 2018/11/14 10:57 43 87 0.7 55 16 59 0.9 1020 89.8 17 57 2018/11/14 10:58 41 83 0.8 55 15 56 2 1019.9 89.8 17 57 2018/11/14 11:02 41 81 0.7 46 15 58 0.7 1019.7 89.8 17 58 10:57、10:58、11:02,这些时间都在11:00的正负5分钟范围内,采集的数据也比较接近 现在想这样处理一下:就是按时间分组,将离整点正负5分钟的时间分到同一组内,然后计算分组内的PM2.5、PM10等字段的平均值 请教大神如何在SQLSer'ver数据库中用SQL解决这个问题?
POCO C++库操作MySQL的Blob字段,SELECT * 就崩溃了,求破。
表里有一个Blob字段,主要用来插入5MB以下的图片,SQL语句是这样的: SELECT * FROM message WHERE id="uuid"; 如果不存在就直接INSERT,否则就UPDATE. 使用POCO C++库执行时,当执行 statement.execute()方法就崩溃了,并且try{}catch(...)都无法捕获到,直接挂了。 多数情况下是工作正常的,一般执行上次左右吧就会出现一次。 MYSQL使用的是5.6,5.7也试了,都有。 但是如果使用 SELECT id FROM message WHERE id="uuid"的SQL语句,出现崩溃概率就会降低很多,但依然存在。 求破。
请教mysql统计每天平均值进行运算问题
用一个数据表统计温度来计算积温问题。 例如:昨天有五个温度值:10.4,10.6,10.8,10.9,11.0,今天统计三个温度:8.2,6.7,5.4。设一个特定值为5. 则从昨天到今天的积温就是:((10.4+10.6+10.8+10.9+11.0)/5-5)+((8.2+6.7+5.4)/3-5),依次类推。 sql语句应该怎么写?求教 现有数据表结构如下图,time是时间字段,ch01为数据: ![图片说明](https://img-ask.csdn.net/upload/201601/24/1453624419_29139.png)
mysql 找错 ,能够更新其他字段,只有describe更新失败
错误信息 mysql> update t_project_type set describe='aaa' where id='2'; 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'describe='aaa' where id='2'' at line 1 表信息 CREATE TABLE `t_project_type` ( `id` smallint(6) NOT NULL AUTO_INCREMENT, `typeName` varchar(50) DEFAULT NULL, `projProp` tinyint(4) DEFAULT NULL, `addTime` char(19) DEFAULT NULL, `describe` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; mysql 版本 mysql> select version(); +------------+ | version() | +------------+ | 5.5.35-log | +------------+
PHP 导入.csv文件到mysql数据库的问题:
最近做一个PHP导入csv文件数据到mysql数据库的项目,做好了后测试是没有问题的,测试的时候都是小文件,最大1M的csv文件都没问题,但是今天突然来了个5M多,5w多条数据的csv文件,就一直说是取不到文件名,不然就是解析不到数据,求大神看看,要说代码有问题,但是小文件都可以上传,遇到大文件就歇菜了, 报错: fgetcsv() expects parameter 1 to be resource, boolean given in 以下是我的处理代码, ``` $filename = $_FILES['file']['tmp_name']; $handle = fopen($filename, 'r'); $result = input_csv($handle); //解析csv $len_result = count($result); if($len_result==0){ echo '没有任何数据!'; exit; } $data_values=null; for ($i = 1; $i < $len_result; $i++) { //循环获取各字段值 $mac = $result[$i][1]; //中文转码 $int1= $result[$i][2]; $field = $result[$i][3]; $channel = $result[$i][4]; $int2= $result[$i][5]; $sta = $result[$i][6]; $int3 = $result[$i][7]; $int4= $result[$i][8]; $int5= $result[$i][9]; $time1 = $result[$i][10]; $time2 = $result[$i][11]; $time3 = $result[$i][12]; $time4 = $result[$i][13]; $hostmac =$result[$i][14]; //中文转码 $data_values .= "('$mac',$int1,$field,$channel,$int2,$sta,$int3,$int4,$int5,FROM_UNIXTIME($time1),FROM_UNIXTIME($time2),FROM_UNIXTIME($time3),FROM_UNIXTIME($time4),'$hostmac'),"; // $sql = "insert into macdata (m_mac,m_int1,m_field,m_channel,m_int2,m_sta,m_int3,m_int4,m_int5,m_time1,m_time2,m_time3,m_time4,m_hostmac) values ('$mac',$int1,$field,$channel,$int2,$sta,$int3,$int4,$int5,FROM_UNIXTIME($time1),FROM_UNIXTIME($time2),FROM_UNIXTIME($time3),FROM_UNIXTIME($time4),'$hostmac')";//批量插入数据表中 // $result2 = $conn->query($sql); // if($result2){ // echo '导入成功!'; // }else{ // echo '导入失败!'; // } } $data_values = substr($data_values,0,-1); //去掉最后一个逗号 fclose($handle); //关闭指针 $sql = "insert into macdata (m_mac,m_int1,m_field,m_channel,m_int2,m_sta,m_int3,m_int4,m_int5,m_time1,m_time2,m_time3,m_time4,m_hostmac) values $data_values";//批量插入数据表中 $result2 = $conn->query($sql); if($result2){ echo '<script>window.location.href = "Mactest.php";alert("导入成功!")</script>'; }else{ echo '<script>window.location.href = "Mactest.php";alert("导入失败,请重试!")</script>'; } function input_csv($handle) { $out = array (); $n = 0; while ($data = fgetcsv($handle,100000)) { $num = count($data); for ($i = 0; $i < $num; $i++) { $out[$n][$i] = $data[$i]; } $n++; } return $out; } ```
JSP从数据库MySQL取出经纬度数据,怎么能够在百度地图上描绘出轨迹
<%@ page contentType="text/html; charset=utf-8" %> <%@ page language="java" %> <%@ page import="com.mysql.jdbc.Driver" %> <%@ page import="java.sql.*" %> <% String driverName="com.mysql.jdbc.Driver";//驱动程序名 String userName="root";//数据库用户名 String userPasswd="qwe";//密码 String dbName="test";//数据库名 String tableName="location";//表名 //联结字符串 String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd; Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection connection=DriverManager.getConnection(url); Statement statement = connection.createStatement(); String sql="SELECT * FROM "+tableName; ResultSet rs = statement.executeQuery(sql); int size = rs.getRow();//数据行数 ResultSetMetaData rmeta = rs.getMetaData();//获得数据结果集合 int numColumns=rmeta.getColumnCount();//确定数据集的列数,亦字段数 //输出每一个数据值 out.print(size+" "); out.print("<br>"); while(rs.next()) { out.print(rs.getString(1)+" ");//编号 out.print("|"); Double point1=rs.getDouble(4); Double point2=rs.getDouble(3); out.print(point1+" ");//输出经度 out.print(point2+" ");//输出纬度 out.print("<br>"); } %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;} #l-map{height:100%;width:78%;float:left;border-right:2px solid #bcbcbc;} #r-result{height:100%;width:20%;float:left;} </style> <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.5&ak=2a8432fa52e468d4644b16afa735618e"></script> <title>折线</title> <body> <div id="allmap"></div> <script type="text/javascript"> var map = new BMap.Map("allmap"); var point = new BMap.Point(113.001,28.23540605); var p=document.from1.myhidden.value; map.centerAndZoom(point, 13); var polyline = new BMap.Polyline([ new BMap.Point(113.0051,28.2334), new BMap.Point(113.0031,28.2322), new BMap.Point(113.0041,28.23241) ], {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5});//这里的坐标需要从数据库获取!! 卡在这里了 map.addOverlay(polyline); </script> </body> </html>
百度地图从MySql中获取经纬度
<%@ page contentType="text/html; charset=utf-8" %> <%@ page language="java" %> <%@ page import="com.mysql.jdbc.Driver" %> <%@ page import="java.sql.*" %> <% String driverName="com.mysql.jdbc.Driver";//驱动程序名 String userName="root";//数据库用户名 String userPasswd="qwe";//密码 String dbName="test";//数据库名 String tableName="location";//表名 //联结字符串 String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd; Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection connection=DriverManager.getConnection(url); Statement statement = connection.createStatement(); String sql="SELECT * FROM "+tableName; ResultSet rs = statement.executeQuery(sql); int size = rs.getRow();//数据行数 ResultSetMetaData rmeta = rs.getMetaData();//获得数据结果集合 int numColumns=rmeta.getColumnCount();//确定数据集的列数,亦字段数 //输出每一个数据值 out.print(size+" "); out.print("<br>"); while(rs.next()) { out.print(rs.getString(1)+" ");//编号 out.print("|"); Double point1=rs.getDouble(4); Double point2=rs.getDouble(3); out.print(point1+" ");//输出经度 out.print(point2+" ");//输出纬度 out.print("<br>"); } %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;} #l-map{height:100%;width:78%;float:left;border-right:2px solid #bcbcbc;} #r-result{height:100%;width:20%;float:left;} </style> <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.5&ak=2a8432fa52e468d4644b16afa735618e"></script> <title>折线</title> <body> <div id="allmap"></div> <script type="text/javascript"> var map = new BMap.Map("allmap"); var point = new BMap.Point(113.001,28.23540605); var p=document.from1.myhidden.value; map.centerAndZoom(point, 13); var polyline = new BMap.Polyline([ new BMap.Point(113.0051,28.2334), new BMap.Point(113.0031,28.2322), new BMap.Point(113.0041,28.23241) ], {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5});//这里的坐标需要从数据库获取!! 卡在这里了 map.addOverlay(polyline); </script> </body> </html>
sql大数据自关联查询优化
1. 一张表a,字段有date(日期),city(城市),area(区域),cl(期初人口数量),ml(期末人口数量),zl(增加的人口数量) 2. 只有当天zl有变动的时候才会有数据,如果不变动,则当天不记录 3. 表内容示例: 4. date city area cl ml zl 5. 2018-05-01 cc1 a11 100 99 -1 6. 2018-05-02 cc1 a12 200 205 5 7. 2018-05-02 cc2 a21 50 100 50 8. 2018-05-03 cc1 a11 99 140 51 9. 要查每一个区域的一定时间范围内的期初数量和期末数量,例:查2018-05-01至2018-05-03,cc1-a11的期初是100.期末是140,cc1-a12的期初是200,期末是205,cc2-a21的期初是50,期末是100 10. 找到两种方式查期初和期末:一是取最小日期和最大日期所在的日期,据日期取找值;二是自关联。目前因为数据量到2千万,查询速度很慢,寻找优化方案 11. 在线等,着急,谢谢!
菜鸟求助,如何用sql 查询出用户在当月,有那些天签到了(不用查连续的)
表名及字段:user_sign_in (user_id ,signin_time) 传参数 : Integer userId 返回:Integer[] [ 1,5,6,...... ] (返回数组,当月签到的日期)
使用Python 语句将excel 自动导入本地Mysql数据表, 显示执行完毕,但Mysql 数据表中没有找到纪录
各位高手好: 在尝试着把之前自己的工作纪录导进本机建立的Mysql 数据库中 网上找到了某大神的代码: 如连接: https://www.cnblogs.com/longbigbeard/p/9309180.html 运行代码后显示运行成功,如图: ![图片说明](https://img-ask.csdn.net/upload/201904/29/1556513570_328017.png) 然而,当在MySQL 表格中复查的时候,发现数据库表格为空值(如图) ![图片说明](https://img-ask.csdn.net/upload/201904/29/1556513709_711636.png) 要导入的excel 表格截图如下:(好遗憾,似乎CSDN不能添加excel作为附件) ![图片说明](https://img-ask.csdn.net/upload/201904/29/1556514157_409812.png) 仿写代码如下:高手们知道问题出在那里么? ``` import xlrd import pymysql import xlrd # 打开excel---------------------------------------------------------- def open_excel(): try: book = xlrd.open_workbook('C:/Users/lenovo/Desktop/工作纪录就靠它了.xlsx') #文件名,把文件与py文件放在同一目录下 except: print("open excel file failed!") try: sheet = book.sheet_by_name('ANZ纪录') #execl里面的worksheet1 return sheet except: print("locate worksheet in excel failed!") # 验证:open_excel 是跑的通的 #----------------------------------------------------------------- #连接数据库------------------------------------------------------- try: db = pymysql.connect(host='localhost',user="root", passwd='QAZwsx12345678', db='test', charset='utf8') except: print("could not connect to mysql server") # 验证:本机数据库连接 是跑的通的 #---------------------------------------------------------------- def search_count(): cursor = db.cursor() select = "select count(PN) from pn_infor" #获取表中xxxxx记录数 cursor.execute(select) #执行sql语句 line_count = cursor.fetchone() print(line_count[0]) #验证:search_count 是可以跑通的 #----------------------------------------------------------------- def insert_deta(): sheet = open_excel() cursor = db.cursor() for i in range(5, sheet.nrows): #前5行是标题名,对应表中的字段名所以应该从第6行开始,计算机以0开始计数,所以值是6 inidate = sheet.cell(i,0).value #取第i行第0列 initiation_date = xlrd.xldate_as_datetime(inidate,0) # 把数字型的日期解码成真正的日期 requestor = sheet.cell(i,1).value#取第i行第1列,下面依次类推 EB = sheet.cell(i,2).value EOL_By = xlrd.xldate_as_datetime(EB,0) # 把数字型的日期解码成真正的日期 customer_name = sheet.cell(i,3).value Type_of_Service = sheet.cell(i,4).value PN = sheet.cell(i,5).value description30 = sheet.cell(i,6).value description80 = sheet.cell(i,7).value Enable = sheet.cell(i,8).value CostUSD = sheet.cell(i,9).value CostAUD = sheet.cell(i,10).value ListpriceAUD = sheet.cell(i,11).value DistipriceAUD = sheet.cell(i,12).value print(initiation_date) print(requestor) print(EOL_By) print(customer_name) print(Type_of_Service) print(PN) print(description30) print(description80) print(Enable) print(CostUSD) print(CostAUD) print(ListpriceAUD) print(DistipriceAUD) print("---------------") value = (initiation_date,requestor,EOL_By,customer_name,Type_of_Service,PN,description30,description80,Enable,CostUSD,CostAUD,ListpriceAUD,DistipriceAUD) print(value) sql = "INSERT INTO pn_infor(initiation_date,requestor,EOL_By,customer_name,Type_of_Service,PN,description30,description80,Enable,CostUSD,CostAUD,ListpriceAUD,DistipriceAUD)VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)" cursor.execute(sql,value) #执行sql语句 db.commit() cursor.close() #关闭连接 insert_deta() db.close()#关闭数据 print ("ok ") ```
HQL 问题 !!!
HQL支持 insert into 表名1 select * from 表名2 吗 [b]问题补充:[/b] 这个是继承了org.springframework.orm.hibernate3.support.HibernateDaoSupport类 —————————————————————————————————————— s = this.getSession(); String hql = "insert into Articles select a.artiId,a.artiName,a.artiSpec,a.artiModel,a.artiMarkPrice,a.artiAssociatorPrice,a.artiInfo,a.artiFlag," + "ac.artiClassName,ab.artiBrandName,ap.artiPhotoPath " + "from Article a,Articlass ac,Artibrand ab,Artiphoto ap" + " where a.artiClassId = ac.artiClassId and a.artiBrandId = ab.artiBrandId and a.artiPhotoId = ap.artiPhotoId"; t = s.beginTransaction(); s.createQuery(hql).executeUpdate(); t.commit(); 出现问题 —————————————————————————————————— org.hibernate.hql.ast.QuerySyntaxException: expecting OPEN, found 'select' near line 1, column 22 [insert into Articles select a.artiId,a.artiName,a.artiSpec,a.artiModel,a.artiMarkPrice,a.artiAssociatorPrice,a.artiInfo,a.artiFlag,ac.artiClassName,ab.artiBrandName,ap.artiPhotoPath from com.articleweb.model.Article a,com.articleweb.model.Articlass ac,com.articleweb.model.Artibrand ab,com.articleweb.model.Artiphoto ap where a.artiClassId = ac.artiClassId and a.artiBrandId = ab.artiBrandId and a.artiPhotoId = ap.artiPhotoId] at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59) at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:244) at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:155) at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109) at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75) at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54) at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71) at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133) at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112) at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583) at com.articleweb.model.control.ArticleControl.insertArticles(ArticleControl.java:27) at com.articleweb.struts.action.ArticlesAction.showarti(ArticlesAction.java:47) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216) at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507) at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:619) [b]问题补充:[/b] 我是在MYSQL数据上 用SQL 试过之后才到HQL用的。 既然HQL支持的就不应该有这样的问题吧。查出来的结果结构和要导入的表结果是相同的。 [b]问题补充:[/b] Hibernate 3.1 数据库绝对支持这个方法 我试用过后才到HQL里运用的。 [b]问题补充:[/b] 要是可以用SQL的问题就不存在了。郁闷中。 [b]问题补充:[/b] 楼上的高手不是说HQL支持这个语法的吗 [b]问题补充:[/b] 这个跟关联查询有关系吗?字段和表名我都是按类对象来写的。 就是不行。 无奈了。 快背熟了 没错别字 还是不行 [b]问题补充:[/b] insert into Articles select a.artiId,a.artiName,a.artiSpec,a.artiModel,a.artiMarkPrice,a.artiAssociatorPrice,a.artiInfo,a.artiFlag," + "ac.artiClassName,ab.artiBrandName,ap.artiPhotoPath " + "from Article a,Articlass ac,Artibrand ab,Artiphoto ap" + " where a.artiClassId = ac.artiClassId and a.artiBrandId = ab.artiBrandId and a.artiPhotoId = ap.artiPhotoId [b]问题补充:[/b] String hql = "insert into Articles(artiId,artiName,artiSpec,artiModel,artiMarkPrice,artiAssociatorPrice,artiInfo,artiFlag,artiClassName,artiBrandName,artiPhotoPath)" + " select a.artiId,a.artiName,a.artiSpec,a.artiModel,a.artiMarkPrice,a.artiAssociatorPrice,a.artiInfo,a.artiFlag," + "ac.artiClassName,ab.artiBrandName,ap.artiPhotoPath " + "from Article a,Articlass ac,Artibrand ab,Artiphoto ap" + " where a.artiClassId = ac.artiClassId and a.artiBrandId = ab.artiBrandId and a.artiPhotoId = ap.artiPhotoId"; [b]问题补充:[/b] 异常变了 —————————————————————————————————————— org.hibernate.exception.ConstraintViolationException: could not execute update query at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:84) at org.hibernate.hql.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:334) at org.hibernate.engine.query.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:209) at org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:1126) at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:94) at com.articleweb.model.control.ArticleControl.insertArticles(ArticleControl.java:28) at com.articleweb.struts.action.ArticlesAction.showarti(ArticlesAction.java:47) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216) at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507) at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:619) Caused by: java.sql.SQLException: Duplicate entry '1' for key 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2921) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1570) at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1085) at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:670) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1159) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1076) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1061) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102) at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:75) ... 33 more 16:58:21,437 DEBUG JDBCTransaction:152 - rollback 16:58:21,437 DEBUG JDBCTransaction:193 - re-enabling autocommit 16:58:21,437 DEBUG JDBCTransaction:163 - rolled back JDBC Connection 16:58:21,437 DEBUG QueryTranslatorImpl:236 - parse() - HQL: from com.articleweb.model.Articles 16:58:21,437 DEBUG ErrorCounter:68 - throwQueryException() : no errors 16:58:21,437 DEBUG HqlSqlBaseWalker:111 - select << begin [level=1, statement=select] 16:58:21,437 DEBUG FromElement:104 - FromClause{level=1} : com.articleweb.model.Articles (no alias) -> articles0_ 16:58:21,437 DEBUG HqlSqlBaseWalker:117 - select : finishing up [level=1, statement=select] 16:58:21,437 DEBUG HqlSqlWalker:511 - processQuery() : ( SELECT ( FromClause{level=1} myweb.articles articles0_ ) ) 16:58:21,453 DEBUG HqlSqlWalker:713 - Derived SELECT clause created. 16:58:21,453 DEBUG JoinProcessor:128 - Using FROM fragment [myweb.articles articles0_] 16:58:21,453 DEBUG HqlSqlBaseWalker:123 - select >> end [level=1, statement=select] 16:58:21,453 DEBUG ErrorCounter:68 - throwQueryException() : no errors 16:58:21,453 DEBUG QueryTranslatorImpl:206 - HQL: from com.articleweb.model.Articles 16:58:21,453 DEBUG QueryTranslatorImpl:207 - SQL: select articles0_.ArtiID as ArtiID11_, articles0_.ArtiName as ArtiName11_, articles0_.ArtiSpec as ArtiSpec11_, articles0_.ArtiModel as ArtiModel11_, articles0_.ArtiMarkPrice as ArtiMark5_11_, articles0_.ArtiAssociatorPrice as ArtiAsso6_11_, articles0_.ArtiInfo as ArtiInfo11_, articles0_.ArtiFlag as ArtiFlag11_, articles0_.ArtiClassName as ArtiClas9_11_, articles0_.ArtiBrandName as ArtiBra10_11_, articles0_.ArtiPhotoPath as ArtiPho11_11_ from myweb.articles articles0_ 16:58:21,453 DEBUG ErrorCounter:68 - throwQueryException() : no errors [b]问题补充:[/b] 详细异常 ————————————————————————————————————————16:58:20,703 DEBUG JDBCTransaction:54 - begin 16:58:20,718 DEBUG JDBCTransaction:59 - current autocommit status: true 16:58:20,718 DEBUG JDBCTransaction:62 - disabling autocommit 16:58:20,890 DEBUG QueryTranslatorImpl:236 - parse() - HQL: insert into Articles(artiId,artiName,artiSpec,artiModel,artiMarkPrice,artiAssociatorPrice,artiInfo,artiFlag,artiClassName,artiBrandName,artiPhotoPath) select a.artiId,a.artiName,a.artiSpec,a.artiModel,a.artiMarkPrice,a.artiAssociatorPrice,a.artiInfo,a.artiFlag,ac.artiClassName,ab.artiBrandName,ap.artiPhotoPath from com.articleweb.model.Article a,com.articleweb.model.Articlass ac,com.articleweb.model.Artibrand ab,com.articleweb.model.Artiphoto ap where a.artiClassId = ac.artiClassId and a.artiBrandId = ab.artiBrandId and a.artiPhotoId = ap.artiPhotoId 16:58:20,906 DEBUG ErrorCounter:68 - throwQueryException() : no errors 16:58:21,015 DEBUG HqlSqlBaseWalker:111 - insert << begin [level=1, statement=insert] 16:58:21,062 DEBUG HqlSqlBaseWalker:111 - select << begin [level=2, statement=insert] 16:58:21,109 DEBUG FromElement:104 - FromClause{level=1} : com.articleweb.model.Article (a) -> article0_ 16:58:21,109 DEBUG FromElement:104 - FromClause{level=1} : com.articleweb.model.Articlass (ac) -> articlass1_ 16:58:21,109 DEBUG FromElement:104 - FromClause{level=1} : com.articleweb.model.Artibrand (ab) -> artibrand2_ 16:58:21,125 DEBUG FromElement:104 - FromClause{level=1} : com.articleweb.model.Artiphoto (ap) -> artiphoto3_ 16:58:21,125 DEBUG FromReferenceNode:51 - Resolved : a -> ArtiId 16:58:21,125 DEBUG DotNode:541 - getDataType() : artiId -> org.hibernate.type.IntegerType@e1cfa7 16:58:21,125 DEBUG FromReferenceNode:51 - Resolved : a.artiId -> article0_.ArtiId 16:58:21,125 DEBUG FromReferenceNode:51 - Resolved : a -> ArtiId 16:58:21,125 DEBUG DotNode:541 - getDataType() : artiName -> org.hibernate.type.StringType@10811b5 16:58:21,125 DEBUG FromReferenceNode:51 - Resolved : a.artiName -> article0_.ArtiName 16:58:21,125 DEBUG FromReferenceNode:51 - Resolved : a -> ArtiId 16:58:21,125 DEBUG DotNode:541 - getDataType() : artiSpec -> org.hibernate.type.StringType@10811b5 16:58:21,125 DEBUG FromReferenceNode:51 - Resolved : a.artiSpec -> article0_.ArtiSpec 16:58:21,156 DEBUG FromReferenceNode:51 - Resolved : a -> ArtiId 16:58:21,156 DEBUG DotNode:541 - getDataType() : artiModel -> org.hibernate.type.StringType@10811b5 16:58:21,156 DEBUG FromReferenceNode:51 - Resolved : a.artiModel -> article0_.ArtiModel 16:58:21,156 DEBUG FromReferenceNode:51 - Resolved : a -> ArtiId 16:58:21,156 DEBUG DotNode:541 - getDataType() : artiMarkPrice -> org.hibernate.type.FloatType@1af5853 16:58:21,156 DEBUG FromReferenceNode:51 - Resolved : a.artiMarkPrice -> article0_.ArtiMarkPrice 16:58:21,156 DEBUG FromReferenceNode:51 - Resolved : a -> ArtiId 16:58:21,156 DEBUG DotNode:541 - getDataType() : artiAssociatorPrice -> org.hibernate.type.FloatType@1af5853 16:58:21,156 DEBUG FromReferenceNode:51 - Resolved : a.artiAssociatorPrice -> article0_.ArtiAssociatorPrice 16:58:21,171 DEBUG FromReferenceNode:51 - Resolved : a -> ArtiId 16:58:21,171 DEBUG DotNode:541 - getDataType() : artiInfo -> org.hibernate.type.StringType@10811b5 16:58:21,171 DEBUG FromReferenceNode:51 - Resolved : a.artiInfo -> article0_.ArtiInfo 16:58:21,171 DEBUG FromReferenceNode:51 - Resolved : a -> ArtiId 16:58:21,171 DEBUG DotNode:541 - getDataType() : artiFlag -> org.hibernate.type.IntegerType@e1cfa7 16:58:21,171 DEBUG FromReferenceNode:51 - Resolved : a.artiFlag -> article0_.ArtiFlag 16:58:21,171 DEBUG FromReferenceNode:51 - Resolved : ac -> ArtiClassId 16:58:21,171 DEBUG DotNode:541 - getDataType() : artiClassName -> org.hibernate.type.StringType@10811b5 16:58:21,171 DEBUG FromReferenceNode:51 - Resolved : ac.artiClassName -> articlass1_.ArtiClassName 16:58:21,171 DEBUG FromReferenceNode:51 - Resolved : ab -> ArtiBrandId 16:58:21,171 DEBUG DotNode:541 - getDataType() : artiBrandName -> org.hibernate.type.StringType@10811b5 16:58:21,171 DEBUG FromReferenceNode:51 - Resolved : ab.artiBrandName -> artibrand2_.ArtiBrandName 16:58:21,171 DEBUG FromReferenceNode:51 - Resolved : ap -> ArtiPhotoId 16:58:21,171 DEBUG DotNode:541 - getDataType() : artiPhotoPath -> org.hibernate.type.StringType@10811b5 16:58:21,171 DEBUG FromReferenceNode:51 - Resolved : ap.artiPhotoPath -> artiphoto3_.ArtiPhotoPath 16:58:21,218 DEBUG FromReferenceNode:51 - Resolved : a -> ArtiId 16:58:21,218 DEBUG DotNode:541 - getDataType() : artiClassId -> org.hibernate.type.IntegerType@e1cfa7 16:58:21,218 DEBUG FromReferenceNode:51 - Resolved : a.artiClassId -> article0_.ArtiClassId 16:58:21,218 DEBUG FromReferenceNode:51 - Resolved : ac -> ArtiClassId 16:58:21,218 DEBUG DotNode:541 - getDataType() : artiClassId -> org.hibernate.type.IntegerType@e1cfa7 16:58:21,218 DEBUG FromReferenceNode:51 - Resolved : ac.artiClassId -> articlass1_.ArtiClassId 16:58:21,218 DEBUG FromReferenceNode:51 - Resolved : a -> ArtiId 16:58:21,218 DEBUG DotNode:541 - getDataType() : artiBrandId -> org.hibernate.type.IntegerType@e1cfa7 16:58:21,218 DEBUG FromReferenceNode:51 - Resolved : a.artiBrandId -> article0_.ArtiBrandId 16:58:21,218 DEBUG FromReferenceNode:51 - Resolved : ab -> ArtiBrandId 16:58:21,218 DEBUG DotNode:541 - getDataType() : artiBrandId -> org.hibernate.type.IntegerType@e1cfa7 16:58:21,218 DEBUG FromReferenceNode:51 - Resolved : ab.artiBrandId -> artibrand2_.ArtiBrandId 16:58:21,218 DEBUG FromReferenceNode:51 - Resolved : a -> ArtiId 16:58:21,218 DEBUG DotNode:541 - getDataType() : artiPhotoId -> org.hibernate.type.IntegerType@e1cfa7 16:58:21,234 DEBUG FromReferenceNode:51 - Resolved : a.artiPhotoId -> article0_.ArtiPhotoId 16:58:21,234 DEBUG FromReferenceNode:51 - Resolved : ap -> ArtiPhotoId 16:58:21,234 DEBUG DotNode:541 - getDataType() : artiPhotoId -> org.hibernate.type.IntegerType@e1cfa7 16:58:21,234 DEBUG FromReferenceNode:51 - Resolved : ap.artiPhotoId -> artiphoto3_.ArtiPhotoId 16:58:21,234 DEBUG HqlSqlBaseWalker:117 - select : finishing up [level=2, statement=insert] 16:58:21,234 DEBUG HqlSqlWalker:511 - processQuery() : ( SELECT ( {select clause} ( article0_.ArtiId ArtiId artiId ) ( article0_.ArtiName ArtiId artiName ) ( article0_.ArtiSpec ArtiId artiSpec ) ( article0_.ArtiModel ArtiId artiModel ) ( article0_.ArtiMarkPrice ArtiId artiMarkPrice ) ( article0_.ArtiAssociatorPrice ArtiId artiAssociatorPrice ) ( article0_.ArtiInfo ArtiId artiInfo ) ( article0_.ArtiFlag ArtiId artiFlag ) ( articlass1_.ArtiClassName ArtiClassId artiClassName ) ( artibrand2_.ArtiBrandName ArtiBrandId artiBrandName ) ( artiphoto3_.ArtiPhotoPath ArtiPhotoId artiPhotoPath ) ) ( FromClause{level=1} myweb.article article0_ myweb.articlass articlass1_ myweb.artibrand artibrand2_ myweb.artiphoto artiphoto3_ ) ( where ( and ( and ( = ( article0_.ArtiClassId ArtiId artiClassId ) ( articlass1_.ArtiClassId ArtiClassId artiClassId ) ) ( = ( article0_.ArtiBrandId ArtiId artiBrandId ) ( artibrand2_.ArtiBrandId ArtiBrandId artiBrandId ) ) ) ( = ( article0_.ArtiPhotoId ArtiId artiPhotoId ) ( artiphoto3_.ArtiPhotoId ArtiPhotoId artiPhotoId ) ) ) ) ) 16:58:21,281 DEBUG JoinProcessor:128 - Using FROM fragment [myweb.artiphoto artiphoto3_] 16:58:21,281 DEBUG JoinProcessor:128 - Using FROM fragment [myweb.artibrand artibrand2_] 16:58:21,281 DEBUG JoinProcessor:128 - Using FROM fragment [myweb.articlass articlass1_] 16:58:21,281 DEBUG JoinProcessor:128 - Using FROM fragment [myweb.article article0_] 16:58:21,281 DEBUG HqlSqlBaseWalker:123 - select >> end [level=2, statement=insert] 16:58:21,281 DEBUG HqlSqlBaseWalker:117 - insert : finishing up [level=1, statement=insert] 16:58:21,281 DEBUG HqlSqlBaseWalker:123 - insert >> end [level=1, statement=insert] 16:58:21,281 DEBUG ErrorCounter:68 - throwQueryException() : no errors 16:58:21,328 DEBUG ErrorCounter:68 - throwQueryException() : no errors 16:58:21,437 WARN JDBCExceptionReporter:71 - SQL Error: 1062, SQLState: 23000 16:58:21,437 ERROR JDBCExceptionReporter:72 - Duplicate entry '1' for key 1 org.hibernate.exception.ConstraintViolationException: could not execute update query at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:84) at org.hibernate.hql.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:334) at org.hibernate.engine.query.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:209) at org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:1126) at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:94) at com.articleweb.model.control.ArticleControl.insertArticles(ArticleControl.java:28) at com.articleweb.struts.action.ArticlesAction.showarti(ArticlesAction.java:47) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216) at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507) at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:619) Caused by: java.sql.SQLException: Duplicate entry '1' for key 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2921) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1570) at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1085) at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:670) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1159) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1076) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1061) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102) at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:75) ... 33 more 16:58:21,437 DEBUG JDBCTransaction:152 - rollback 16:58:21,437 DEBUG JDBCTransaction:193 - re-enabling autocommit 16:58:21,437 DEBUG JDBCTransaction:163 - rolled back JDBC Connection 16:58:21,437 DEBUG QueryTranslatorImpl:236 - parse() - HQL: from com.articleweb.model.Articles 16:58:21,437 DEBUG ErrorCounter:68 - throwQueryException() : no errors 16:58:21,437 DEBUG HqlSqlBaseWalker:111 - select << begin [level=1, statement=select] 16:58:21,437 DEBUG FromElement:104 - FromClause{level=1} : com.articleweb.model.Articles (no alias) -> articles0_ 16:58:21,437 DEBUG HqlSqlBaseWalker:117 - select : finishing up [level=1, statement=select] 16:58:21,437 DEBUG HqlSqlWalker:511 - processQuery() : ( SELECT ( FromClause{level=1} myweb.articles articles0_ ) ) 16:58:21,453 DEBUG HqlSqlWalker:713 - Derived SELECT clause created. 16:58:21,453 DEBUG JoinProcessor:128 - Using FROM fragment [myweb.articles articles0_] 16:58:21,453 DEBUG HqlSqlBaseWalker:123 - select >> end [level=1, statement=select] 16:58:21,453 DEBUG ErrorCounter:68 - throwQueryException() : no errors 16:58:21,453 DEBUG QueryTranslatorImpl:206 - HQL: from com.articleweb.model.Articles 16:58:21,453 DEBUG QueryTranslatorImpl:207 - SQL: select articles0_.ArtiID as ArtiID11_, articles0_.ArtiName as ArtiName11_, articles0_.ArtiSpec as ArtiSpec11_, articles0_.ArtiModel as ArtiModel11_, articles0_.ArtiMarkPrice as ArtiMark5_11_, articles0_.ArtiAssociatorPrice as ArtiAsso6_11_, articles0_.ArtiInfo as ArtiInfo11_, articles0_.ArtiFlag as ArtiFlag11_, articles0_.ArtiClassName as ArtiClas9_11_, articles0_.ArtiBrandName as ArtiBra10_11_, articles0_.ArtiPhotoPath as ArtiPho11_11_ from myweb.articles articles0_ 16:58:21,453 DEBUG ErrorCounter:68 - throwQueryException() : no errors
需要用MySQL实现一个频次统计排序的功能,并进行表关联输出
本人需要用MySQL实现如下功能: 表A name,ID AAA,1000.1.1 AAA,1000.1.1 BBB,1000.1.3 BBB,1000.1.3 CCC,1000.1.4 CCC,1000.1.4 DDD,1000.1.5 DDD,1000.1.5 EEE,1000.1.7 EEE,1000.1.7 FFF,1011.8.9 GGG,1011.8.10 HHH,1011.8.11 III,1011.8.12 JJJ,1011.8.13 KKK,1011.8.14 KKK,1011.8.14 LLL,1011.8.15 MMM,1011.8.16 表B ID1,name1,ID2,name2 1000.1.3,BBB,6016,01A 1000.1.4,CCC,6016,01A 1000.1.5,DDD,6016,01A 1000.1.9,NNN,6016,01A 1000.1.26,OOO,6009,01B 1000.1.193,PPP,6006,01C 1000.1.194,QQQ,6007,01D 1000.3.8,RRR,7008,02A 1000.4.12,SSS,NULL,NULL 表C shortID,ID2,name2 1000.1,6016,01A 表D和表B结构一样,用来存放最终想要的结果 注明下ID,ID1,ID2之类的字段都是“数字1.数字2.数字3”这样的结构 要实现的功能是: 1.清除表A的重复记录 2.生成表C:只有当表B的ID2以6开头且不为NULL的时候,才进行下面的操作 shortID是表B的ID1去掉最后一个点以及数字3之后的值。 筛选出所有的shortID,ID2,name2组合,然后统计频次,如下: 1000.1,6016,01A 1000.1,6016,01A 1000.1,6016,01A 1000.1,6016,01A 1000.1,6009,01B 1000.1,6006,01C 统计结果(最后一列是频次): 1000.1,6016,01A,4 1000.1,6009,01B,1 1000.1,6006,01C,1 那么就把频次最高的一行1000.1,6016,01A放入表C,其余忽略 对于其他shortID的各种组合,也进行同样处理,并选出频次最高的一行放入表C。 3.用表A的ID来关联表B的ID1 如果能找到相关结果(若ID2值为NULL,算没找到),就直接把表B的那一行插入表D 如果找不到相关结果,那么就拿A的ID的“数字1.数字2”去和表C的shortID进行匹配 能匹配上的就按照如下格式输出到表D:表A的ID,表A的name,表C的ID2,表C的name2 匹配不上,就忽略,不输出。 遍历表B的所有行 如果这一行的ID2不是NULL,就直接插入到D中,注意不要和表D当中已有的记录重复。 如果这一行的ID2是NULL,就拿这一行的ID1和上面表A的ID以同样的处理方式来处理。
各位大佬们,为什么PHP新闻发布系统中已经注册好的用户无法登录,总是显示密码错误,但是数据库有字段存在。。。
![图片说明](https://img-ask.csdn.net/upload/201911/09/1573288989_712391.png)![图片说明](https://img-ask.csdn.net/upload/201911/09/1573289003_724529.png)![图片说明](https://img-ask.csdn.net/upload/201911/09/1573289017_161268.png)![图片说明](https://img-ask.csdn.net/upload/201911/09/1573289321_184506.png) 以下是login_users_process.php的代码: <?php session_start(); include_once("functions/database.php"); $name = $_POST["name"]; if($_POST["checknum"] != $_SESSION["checknum"]){ header("Location:index_users.php?login_message=checknum_error"); return; } if(isset($_COOKIE["password"])){ $first_password = $_COOKIE["password"]; }else{ $first_password = md5($_POST["password"]); } if(empty($_POST["expire"])){ setcookie("name",$name,time()-1); setcookie("password",$first_password,time()-1); } $password = md5($first_password); $sql = "select * from users where name='$name' and password ='$password'"; get_connection(); $result_set = mysql_query($sql); if(mysql_num_rows($result_set)>0){ if(isset($_POST["expire"])){ $expire = time()+intval($_POST["expire"]); setcookie("name",$name,$expire); setcookie("password",$first_password,$expire); } $users = mysql_fetch_array($result_set); $_SESSION['user_id'] = $users['user_id']; $_SESSION['name'] = $users['name']; header("Location:index_users.php?login_message=password_right"); }else{ header("Location:index_users.php?login_message=password_error"); } close_connection(); ?> 以下是login_users.php 的代码 <?php session_start(); include_once("functions/database.php"); include_once("functions/is_login.php"); if(isset($_GET["login_message"])){ if($_GET["login_message"]=="checknum_error"){ echo "验证码错误,重新登录!<br/>"; }else if($_GET["login_message"]=="password_error"){ echo "密码错误,重新登录!<br/>"; }else if($_GET["login_message"]=="password_right"){ echo "登录成功!<br/>"; } } if(is_login()){ echo "欢迎".$_SESSION['name']."访问系统!<br/>"; echo "<a href='logout.php'>注销</a>"; return; } $name = ""; if(isset($_COOKIE["name"])){ $name = $_COOKIE["name"]; } $password = ""; if(isset($_COOKIE["password"])){ $password = $_COOKIE["password"]; } ?> <form action="login_users_process.php" method="post"> 用户名:<input type="text" name="name" size="11" value="<?php echo $name?>" /><br/> 密 码 :<input type="password" name="password" size="11" value="<?php echo $password?>" /><br/> 验证码:<input type="text" name="checknum" size="6"/> <?php $checknum = ""; $checknum .= mt_rand(0,9); $checknum .= mt_rand(0,9); $checknum .= mt_rand(0,9); $checknum .= mt_rand(0,9); $_SESSION['checknum'] = $checknum; echo $checknum;?> <br/> <input type="checkbox" name="expire" value="3600" checked/>Cookie保存1小时<br/> <input type="submit" value="登录" /> <input type="button" value="注册" onClick="location.href='register.html'"/> </form>
Mybatis小练习 报错 求大神指导,信息详尽
# UserMapper ``` public interface UserMapper { //根据id查询用户信息 public User findUserById(int id) throws Exception; //根据用户名列查询用户列表 public List<User> findUserByName(String name)throws Exception; //插入用户 public void insertUser(User user)throws Exception; } ``` # UserMapper.xml ``` <?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"> <!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离 注意:使用mapper代理方法开发,namespace有特殊重要的作用,namespace等于mapper接口地址 --> <mapper namespace="com.neuedu.mapper.UserMapper"> <!-- 在 映射文件中配置很多sql语句 --> <!-- 需求:通过id查询用户表的记录 --> <!-- 通过 select执行数据库查询 id:标识 映射文件中的 sql 将sql语句封装到mappedStatement对象中,所以将id称为statement的id parameterType:指定输入 参数的类型,这里指定int型 #{}表示一个占位符号 #{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称 resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。 --> <select id="findUserById" parameterType="int" resultType="user"> SELECT * FROM user WHERE id=#{value} </select> <!-- 根据用户名称模糊查询用户信息,可能返回多条 resultType:指定就是单条记录所映射的java对象 类型 ${}:表示拼接sql串,将接收到参数的内容不加任何修饰拼接在sql中。 使用${}拼接sql,引起 sql注入 ${value}:接收输入 参数的内容,如果传入类型是简单类型,${}中只能使用value --> <select id="findUserByName" parameterType="java.lang.String" resultType="com.neuedu.pojo.User"> SELECT * FROM user WHERE username LIKE '%${value}%' </select> <!-- 添加用户 parameterType:指定输入 参数类型是pojo(包括 用户信息) #{}中指定pojo的属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值 --> <insert id="insertUser" parameterType="com.neuedu.pojo.User"> <!-- 将插入数据的主键返回,返回到user对象中 SELECT LAST_INSERT_ID():得到刚insert进去记录的主键值,只适用与自增主键 keyProperty:将查询到主键值设置到parameterType指定的对象的哪个属性 order:SELECT LAST_INSERT_ID()执行顺序,相对于insert语句来说它的执行顺序 resultType:指定SELECT LAST_INSERT_ID()的结果类型 --> insert into user(id,username,birthday,sex,address) values (seq_user.nextval,#{username},#{birthday},#{sex},#{address}) <!-- 插入数据后,返回自动增长列的ID值,将sql语句的返回值赋给parameterType绑定对象的ID属性 MySQL中使用: select LAST_INSERT_ID() --> <selectKey keyProperty="id" order="AFTER" resultType="int"> SELECT LAST_INSERT_ID() <!--select seq_user.currval from dual--> </selectKey> <!-- 使用mysql的uuid()生成主键 执行过程: 首先通过uuid()得到主键,将主键设置到user对象的id属性中 其次在insert执行时,从user对象中取出id属性值 --> <!-- <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String"> SELECT uuid() </selectKey> insert into user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address}) --> </insert> <!-- 删除 用户 根据id删除用户,需要输入 id值 --> <delete id="deleteUser" parameterType="java.lang.Integer"> delete from user where id=#{id} </delete> <!-- 根据id更新用户 分析: 需要传入用户的id 需要传入用户的更新信息 parameterType指定user对象,包括 id和更新信息,注意:id必须存在 #{id}:从输入 user对象中获取id属性值 --> <update id="updateUser" parameterType="com.neuedu.pojo.User"> update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id} </update> </mapper> ``` # Tset ``` public class UserMapperTest { private SqlSessionFactory sqlSessionFactory; // 此方法是在执行testFindUserById之前执行 @Before public void setUp() throws Exception { // 创建sqlSessionFactory // mybatis配置文件 String resource = "config/SqlMapConfig.xml"; // 得到配置文件流 InputStream inputStream = Resources.getResourceAsStream(resource); // 创建会话工厂,传入mybatis的配置文件信息 sqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); } @Test public void testFindUserById() throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); //创建UserMapper对象,mybatis自动生成mapper代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //调用userMapper的方法 User user = userMapper.findUserById(1); System.out.println(user); } @Test public void testFindUserByName() throws Exception { SqlSession sqlSession = sqlSessionFactory.openSession(); //创建UserMapper对象,mybatis自动生成mapper代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //调用userMapper的方法 List<User> list = userMapper.findUserByName("袁超"); sqlSession.close(); System.out.println(list); } } ``` # 报错信息 ``` DEBUG [main] - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter. DEBUG [main] - Class not found: org.jboss.vfs.VFS DEBUG [main] - JBoss 6 VFS API is not available in this environment. DEBUG [main] - Class not found: org.jboss.vfs.VirtualFile DEBUG [main] - VFS implementation org.apache.ibatis.io.JBoss6VFS is not valid in this environment. DEBUG [main] - Using VFS adapter org.apache.ibatis.io.DefaultVFS DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo DEBUG [main] - Reader entry: User.class DEBUG [main] - Listing file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo/User.class DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/pojo/User.class DEBUG [main] - Reader entry: ���� 1 N DEBUG [main] - Checking to see if class com.neuedu.pojo.User matches criteria [is assignable to Object] DEBUG [main] - PooledDataSource forcefully closed/removed all connections. DEBUG [main] - PooledDataSource forcefully closed/removed all connections. DEBUG [main] - PooledDataSource forcefully closed/removed all connections. DEBUG [main] - PooledDataSource forcefully closed/removed all connections. DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper DEBUG [main] - Reader entry: UserMapperTest.class DEBUG [main] - Listing file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper/UserMapperTest.class DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/test-classes/com/neuedu/mapper/UserMapperTest.class DEBUG [main] - Reader entry: ���� 1 a DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper DEBUG [main] - Reader entry: UserMapper.class DEBUG [main] - Reader entry: UserMapper.xml DEBUG [main] - Listing file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper/UserMapper.class DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper/UserMapper.class DEBUG [main] - Reader entry: ���� 1    findUserById (I)Lcom/neuedu/pojo/User; DEBUG [main] - Find JAR URL: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper/UserMapper.xml DEBUG [main] - Not a JAR: file:/C:/Users/95638/Desktop/mybatis/ch02-mybatis01/ch02-mybatis01/target/classes/com/neuedu/mapper/UserMapper.xml DEBUG [main] - Reader entry: <?xml version="1.0" encoding="UTF-8" ?> DEBUG [main] - Checking to see if class com.neuedu.mapper.UserMapperTest matches criteria [is assignable to Object] DEBUG [main] - Checking to see if class com.neuedu.mapper.UserMapper matches criteria [is assignable to Object] DEBUG [main] - Opening JDBC Connection DEBUG [main] - Created connection 209833425. DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@c81cdd1] DEBUG [main] - ==> Preparing: SELECT * FROM T_USER WHERE username LIKE '%袁超%' DEBUG [main] - ==> Parameters: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mybatis.t_user' doesn't exist ### The error may exist in com/neuedu/mapper/UserMapper.xml ### The error may involve com.neuedu.mapper.UserMapper.findUserByName-Inline ### The error occurred while setting parameters ### SQL: SELECT * FROM T_USER WHERE username LIKE '%袁超%' ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mybatis.t_user' doesn't exist at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) at com.sun.proxy.$Proxy3.findUserByName(Unknown Source) at com.neuedu.mapper.UserMapperTest.testFindUserByName(UserMapperTest.java:68) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.junit.runner.JUnitCore.run(JUnitCore.java:160) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mybatis.t_user' doesn't exist at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:400) at com.mysql.jdbc.Util.getInstance(Util.java:383) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2447) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1901) at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1193) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59) at com.sun.proxy.$Proxy5.execute(Unknown Source) at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:63) at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148) ... 29 more ``` # SqlMapConfig.xml ``` <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 加载属性文件 --> <properties resource="db.properties"> <!--properties中还可以配置一些属性名和属性值 --> <!-- <property name="jdbc.driver" value=""/> --> </properties> <!-- 全局配置参数,需要时再设置 --> <!-- <settings> </settings> --> <!-- 别名定义 --> <typeAliases> <!-- 针对单个别名定义 type:类型的路径 alias:别名 --> <!-- <typeAlias type="com.neuedu.mybatis.po.User" alias="user"/> --> <!-- 批量别名定义 指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以) --> <package name="com.neuedu.pojo"/> </typeAliases> <!-- 和spring整合后 environments配置将废除--> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理,事务控制由mybatis--> <transactionManager type="JDBC" /> <!-- 数据库连接池,由mybatis管理--> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <!-- 加载 映射文件 --> <mappers> <mapper resource="sqlmap/User.xml"/> <!--通过resource方法一次加载一个映射文件 --> <!-- <mapper resource="sqlmap/User.xml"/> --> <!-- 通过mapper接口加载单个 映射文件 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中 上边规范的前提是:使用的是mapper代理方法 --> <!-- <mapper class="com.neuedu.mapper.UserMapper"/> --> <!-- 批量加载mapper 指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中 上边规范的前提是:使用的是mapper代理方法 --> <package name="com.neuedu.mapper"/> </mappers> </configuration> ``` # User ``` public class User { //属性名和数据库表的字段对应 private int id; private String username;// 用户姓名 private String sex;// 性别 private Date birthday;// 生日 private String address;// 地址 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address=" + address + "]"; } } ``` 也不知道为什么,明明已经在UserMapper.xml里面把表名改了,但是报错信息里查找的还是T-user表 求大神指导!感恩! # 问题已解决 在maven文件里加上下面的代码 ``` <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*Mapper.xml</include> </includes> </resource> </resources> ```
新手学习 希望大神给我写点注释,从根据编号查询开始
package dao.impl; import java.sql.*; import java.util.ArrayList; import java.util.List; import pojo.Lian; import dao.UserDao; public class UserDaoImpl implements UserDao { //用于数据库连接 Connection conn=null; //用于对结果的预处理 Statement st=null; //用于处理结果集 ResultSet rs=null; 220 public boolean getConnection(){ String driver ="com.mysql.jdbc.Driver";//数据库的驱动!! String url="jdbc:mysql://localhost:3306/zhou";//数据库的地址!! String username="root";//表示用户名称 String password="zhou";//表示用户的密码 try { //加载驱动类 Class.forName(driver); //连接数据库 conn=DriverManager.getConnection(url,username,password);//表示要使用驱动以此来链接数据库 } catch (Exception e) { e.printStackTrace();//catch作用是抓住异常 } return true; } @Override public List<Lian> getLian() { List<Lian> list=new ArrayList<Lian>();//定义一个list类 String sql="select *from lian";//用sql语句创建一个查询 try { if(this.getConnection()){//假如这个链接成功就将执行查询 //获取Statement对象执行sql语句 st=conn.createStatement(); //获取结果集 rs=st.executeQuery(sql); while(rs.next()){ //查询出所有信息,取出rs对象中的各字段名下的内容,赋值给各变量 int id=rs.getInt("id");//使用get方法 String name=rs.getString("name"); String password=rs.getString("password"); int age=rs.getInt("age"); String iphone=rs.getString("iphone"); String address=rs.getString("address"); //System.out.println("id:"+id+"name:"+name+"password:"+password+"age:"+age+"iphone:"+iphone+"address:"+address); Lian u=new Lian(); u.setId(id); u.setName(name); u.setPassword(password); u.setAge(age); u.setIphone(iphone); u.setAddress(address); list.add(u); } } } catch (SQLException e) { e.printStackTrace(); }finally{ try { rs.close();//关闭数据库 避免浪费资源 st.close();//关闭statement conn.close();//关闭链接 } catch (SQLException e) { e.printStackTrace(); } } return list;//返回list类对象 } @Override public Lian add(Lian user) { String sql="INSERT INTO lian (name,password,age,iphone,address)VALUES('"+user.getName()+"',"+user.getPassword()+",'"+user.getAge()+"','"+user.getIphone()+"','"+user.getAddress()+"')"; //利用sql语句实现list中数据的增加 if(this.getConnection()){ try { st=conn.createStatement(); int i=st.executeUpdate(sql);//当数据更新时,i的值就被重新赋予 if(i>0){ System.out.println("添加数据成功!!!"); } } catch (Exception e) { e.printStackTrace(); }finally{ try { st.close();//关闭状态集 conn.close();//关闭链接 } catch (SQLException e) { e.printStackTrace(); } } } return user; } @Override public boolean update(Lian user) {//修改lian表中数据资料 String sql="update lian set name=?,password=?,age=?,iphone=?,address=? where id=?"; try { if(this.getConnection()){ //预处理,对表链接成功与否进行判断 PreparedStatement ps=conn.prepareStatement(sql); ps.setString(1, user.getName());// 通过函数方法对新的参数赋值 i ps.setString(2,user.getPassword()); ps.setInt(3, user.getAge()); ps.setString(4, user.getIphone()); ps.setString(5, user.getAddress()); ps.setInt(6, user.getId()); ps.addBatch(); int i=ps.executeUpdate();//当数据被更改,i的值将被重新赋予 if(i>0){ System.out.println("嘿,哥们,你已经成功的更新数据了!!!"); return true;//提示数据更新成功 }else{ System.out.println("更新数据出错,再来一次???"); return false;//提示数据更新失败 } } } catch (SQLException e) { e.printStackTrace(); }finally{ try { if(rs!=null){rs.close();}//关闭结果集 if(st!=null){st.close();}//关闭状态集 if(conn!=null){conn.close();}//关闭链接 } catch (SQLException e) { e.printStackTrace(); } } return false; } @Override public void delete(int id) { String sql="delete from lian where id=?"; //使用sql语句删除lian类中的数据 try { if(this.getConnection()){ PreparedStatement ps=conn.prepareStatement(sql); ps.setInt(1, id); //驱动将其值转化为sql整数类型值 int i=ps.executeUpdate(); if(i>0){ System.out.println("删除成功"); //提示删除成功 } } } catch (SQLException e) { e.printStackTrace(); } finally{ try { rs.close();//关闭结果集 st.close();//关闭状态集 conn.close();//关闭链接 } catch (SQLException e) { e.printStackTrace(); } } } //用户的登录 public Lian login(Lian user){ String sql="select name,password from lian"; //使用sql语句查询lian表中的姓名和密码数据 Lian us =new Lian(); //创建一个新lian表 if(this.getConnection()){ try { st=conn.createStatement(); ResultSet rs=st.executeQuery(sql); while(rs.next()){ String name=rs.getString("name"); String password=rs.getString("password"); us.setName(name); us.setPassword(password); return us; } } catch (SQLException e) { e.printStackTrace(); } } return us; } //s根据编号来查询 @Override public Lian findById(String usrId) { String sql="select * from lian where id =" +usrId; Lian u=null; try { u=new Lian(); if(this.getConnection()){ //获取Statement对象执行sql语句 st=conn.createStatement(); //获取结果集 rs=st.executeQuery(sql); while(rs.next()){ //查询出所有信息,括号里面对应的是数据库表的字段名,也就是实体类的名字 int id=rs.getInt("id"); String name=rs.getString("name"); String password=rs.getString("password"); int age=rs.getInt("age"); String iphone=rs.getString("iphone"); String address=rs.getString("address"); //System.out.println("id:"+id+"name:"+name+"password:"+password+"age:"+age+"iphone:"+iphone+"address:"+address); u.setId(id); u.setName(name); u.setPassword(password); u.setAge(age); u.setIphone(iphone); u.setAddress(address); } System.out.println(u.getName()+u.getAddress()); } return u; } catch (SQLException e) { e.printStackTrace(); }finally{ try { rs.close(); st.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } return u; } } /*public static void main(String[] args) { UserDao u=new UserDaoImpl(); Lian p=new Lian(); p.setName("zhou"); p.setPassword("12456"); u.login(p); // p.setId(5); // p.setAddress("九华山"); // p.setAge(24); // p.setIphone("1345687912"); // p.setName("sanye"); // p.setPassword("123456"); // // u.add(p); //u.update(p); //u.delete(5); // List<Lian> list=u.getLian(); // // for (Lian lian : list) { // // System.out.println(lian.toString()); // } // }*/
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
阿里面试官问我:如何设计秒杀系统?我的回答让他比起大拇指
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图和个人联系方式,欢迎Star和指教 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n...
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
Android性能优化(4):UI渲染机制以及优化
文章目录1. 渲染机制分析1.1 渲染机制1.2 卡顿现象1.3 内存抖动2. 渲染优化方式2.1 过度绘制优化2.1.1 Show GPU overdraw2.1.2 Profile GPU Rendering2.2 卡顿优化2.2.1 SysTrace2.2.2 TraceView 在从Android 6.0源码的角度剖析View的绘制原理一文中,我们了解到View的绘制流程有三个步骤,即m...
微服务中的Kafka与Micronaut
今天,我们将通过Apache Kafka主题构建一些彼此异步通信的微服务。我们使用Micronaut框架,它为与Kafka集成提供专门的库。让我们简要介绍一下示例系统的体系结构。我们有四个微型服务:订单服务,行程服务,司机服务和乘客服务。这些应用程序的实现非常简单。它们都有内存存储,并连接到同一个Kafka实例。 我们系统的主要目标是为客户安排行程。订单服务应用程序还充当网关。它接收来自客户的请求...
致 Python 初学者们!
作者| 许向武 责编 | 屠敏 出品 | CSDN 博客 前言 在 Python 进阶的过程中,相信很多同学应该大致上学习了很多 Python 的基础知识,也正在努力成长。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 Python 这门编程语言,从2009年开始单一使用 Python 应对所有的开发工作,直至今...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
SpringBoot2.x系列教程(三十六)SpringBoot之Tomcat配置
Spring Boot默认内嵌的Tomcat为Servlet容器,关于Tomcat的所有属性都在ServerProperties配置类中。同时,也可以实现一些接口来自定义内嵌Servlet容器和内嵌Tomcat等的配置。 关于此配置,网络上有大量的资料,但都是基于SpringBoot1.5.x版本,并不适合当前最新版本。本文将带大家了解一下最新版本的使用。 ServerProperties的部分源...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
爬取薅羊毛网站百度云资源
这是疫情期间无聊做的爬虫, 去获取暂时用不上的教程 import threading import time import pandas as pd import requests import re from threading import Thread, Lock # import urllib.request as request # req=urllib.request.Requ...
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
HTML5适合的情人节礼物有纪念日期功能
前言 利用HTML5,css,js实现爱心树 以及 纪念日期的功能 网页有播放音乐功能 以及打字倾诉感情的画面,非常适合情人节送给女朋友 具体的HTML代码 具体只要修改代码里面的男某某和女某某 文字段也可自行修改,还有代码下半部分的JS代码需要修改一下起始日期 注意月份为0~11月 也就是月份需要减一。 当然只有一部分HTML和JS代码不够运行的,文章最下面还附加了完整代码的下载地址 &lt;!...
相关热词 c# 为空 判断 委托 c#记事本颜色 c# 系统默认声音 js中调用c#方法参数 c#引入dll文件报错 c#根据名称实例化 c#从邮件服务器获取邮件 c# 保存文件夹 c#代码打包引用 c# 压缩效率
立即提问