发表于: 2017-07-14 20:53:44
1 1300
任务1 部分总结(其他总结暂时不能完成)
今天复习mybatis的时候遇到的一个问题。
是这样的
我的parameterType类型是long类型,数据库自然也是bigint类型,但是run的时候还是会出现错误,我一直猜测是我设置的类型不正确,在百度上也看到有人说试试 integer或者换int。结果是正常run。
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='id', mode=IN, javaType=class java.lang.Long, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
### The error may exist in Table1.xml
### The error may involve Table1.findTable1ById-Inline
### The error occurred while setting parameters
### SQL: select * from table2 where id = ?
### Cause: org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='id', mode=IN, javaType=class java.lang.Long, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
1. maven是什么,和Ant有什么区别
答:是一个项目管理工具,Ant没用过。百度了一波。
Ant
1) Ant是程序化的,必须明确告诉Ant是干什么的。什么时候做,你必须告诉他编译,复制压缩。
2) Ant没有生命周期,必须定义目标和目标之间的依赖。你必须手工为每个目标附上一个任务序列
Maven
1) Maven拥有约定,知道源代码在哪里,打包文件放到了target/classes,然后在target生成一个JAR文件
2) Maven是声明式的。只要创建一个pom.xml文件到默认目录,maven会帮忙处理其他的事情
3) Maven有一个叫生命周期的。运行mvn install命令时候调用,这个命令告诉maven执行一个有序的步骤。直到指定的生命周期,遍历生命周期的一个影响是,maven运行了许多的默认插件,这些目标完成了编译和创建一个jar文件
2. clean,install,package,deploy代表什么含义?
答:clean 清楚,install安装,package打包,deploy上传
3. 怎么样让Maven跳过junit
答: 使用maven命令行,是maven.test.skip
$mvn install –Dmaven.test.skip=true
4. 为什么要用log4j代替system.out.println
答:因为能设置日志信息优先级,日志信息的输出地和日志的输出格式
5. 为什么要用DB设计中要使用Long来代替Date类型?
答: 因为按照中国人的习惯,日期写法不同啊。所以需要用一个long类型代替date类型
6. 自增ID有什么坏处?什么样的场景下不使用自增ID?
答:数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利;
(2)数字型,占用空间小,易排序,在程序中传递也方便;
(3)如果通过非系统增加记录时,可以不用指定该字段,不用担心主键重复问题。
其实它的缺点也就是来自其优点,缺点如下:
(1)因为自动增长,在手动要插入指定ID的记录时会显得麻烦,尤其是当系统与其它系统集成时,需要数据导入时,很难保证原系统的ID不发生主键冲突(前提是老系统也是数字型的)。特别是在新系统上线时,新旧系统并行存在,并且是异库异构的数据库的情况下,需要双向同步时,自增主键将是你的噩梦;
(2)在系统集成或割接时,如果新旧系统主键不同是数字型就会导致修改主键数据类型,这也会导致其它有外键关联的表的修改,后果同样很严重;
(3)若系统也是数字型的,在导入时,为了区分新老数据,可能想在老数据主键前统一加一个字符标识(例如“o”,old)来表示这是老数据,那么自动增长的数字型又面临一个挑战。
在自己插入数据的时候,貌似有一个现象,当插入了9850行的数据,id却显示10000行了,数据量越大的时候,差异更明显,在两亿数据的时候差距在3000W,不知道为什么。看到别的博客说自增id在迁移数据库的时候也很麻烦
7. 什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
答:索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构,在多大的数据量没试过,只知道数据量越大,建索引查询的与不建索引查询非常大。比如不建索引查询速度10秒,建索引为1秒。要给字段建立一个索引,这个索引要具备唯一性,就好像人的身份证一样,一人只能拥有一个。吧
8. 唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
答:区别在于普通索引允许列的值重复。唯一缩印的值必须唯一,且不能重复。
9. 如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?数据量大的时候,
答:需要
10. CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
答:前者是记录创建的时间,后者是修改后的时间。不用吧。这个开发人员自己看的。应该是这么理解吧
12.varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?
答:不太理解为什么要确定一个长度,个人觉得这个长度是不定的,根据需要给一个差不多的长度就可以。区别在于
TEXT 最大长度是 65535 (2^16 - 1) 个字符。
LONGTEXT 最大长度是 4294967295 (2^32 - 1) 个字符。对于我来说暂时还是有点难得。一个是文本格式,一个是超文本格式。看到一个感觉不错的解释,写在日报中,日后回来研究
(首先longtext的最大长度为4GB, 你这里问的应该是varchar与text的用法区别(最大长度65535-3 vs 65535):
1. varchar有系统默认长度,所以必须在括号里定义长度,可以有默认值。
2. text不能有默认值,存储或检索过程中,不存在大小写转换。
3. 经常变化的字段用varchar,能用varchar的地方不用text(效率上: char>varchar>text)
13.怎么进行分页数据的查询,如何判断是否有下一页?
答:MYSQL中有特定的分页查询语句,该sql语句只能在MySQL中使用
select * from t_customer limit ?,?
该sql语句的意思是,从第几行开始,然后取多少行,MySQL中第一行的下标是0
例如:我要取数据库中的前10行数据,我的sql语句应该这样写:select * from t_customer limit 0,9; ,用navicat查看。
14.为什么不可以用Select * from table?
答:一般的表数据量不会这么少,要全部查出需要花费大量时间且不易于观察。
15.什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?
(留一个坑日后研究,)
16.Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
(还是日后研究,因为前面的基础问题)
17.为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?
18.为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发 生一次?
19.日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?
20.为什么需要单步调试?Debug的时候IDE是怎么找到源码的?
21.可否远程连接到线上直接调试?真实的项目中,遇到问题的排查方案是什么?
明天的计划:复习一下spring jdbc dao 代码
遇到的问题:日报开头的传入参数问题
收获:任务总结,然后mybatis的复习。
评论