`
txf2004
  • 浏览: 7044543 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

9月25日培训日记

阅读更多

根据袁龙友老师前两天上课的反馈信息:学员们对表之间建立关联关系的思想还很陌生,毫无概念。首先检讨我以前写的Java书对对象之间的关联关系强调得不够(几乎就是没有任何提及),而对象之间的关系在实际开发中却用得很多。如果对对象之间的关联关系理解不透,那学习hibernate时将会很费劲,我以后的java书中会将对象之间的关系作为一个重点强调。
今天我先上来用自己的土办法强制学员们建立关联关系的思想,告诉学员们一个系统中的对象不是孤零存在的,而于周围的其他对象之间存在着关系,数据库系统中的一个表也经常与其他表之间存在关系。所以,设计一个对象必须要能立即想到它有三个要素:属性、方法、关系;设计一个数据库的表时立即想到两个要素:字段、关系。不管这种说法是否严谨,反正强迫新手按照这种思路记忆后,以后就很容易设计对象关系和表之间的关联关系了。

用eclipse跟踪调试汪大伦的spring中的JavaBean属性名的第二个字母大写时的问题,跟踪了好久,也没找到是哪一句产生的错误,不知道是eclipse调试器太差,还是spring的源程序与class程序之间的不一致,最大可能性还在于我对Eclipse的调试器掌握得不熟练。最后在网上搜索到结论,问题在于我们对JavaBean规范的理解不够深入。如果类中有两个方法,一个是setter,一个是getter,并且setter的单参数的属性和getter的无参数返回值得类型相同,并且setter返回void,就认为发现了一个属性。并且,setter的名字必须以set字符串开始,getter的名字必须以get开始,或者以is开始并且属性类型是boolean。在上面的情况发生时,get和set之后的名字还必须匹配。这个匹配就是属性的名字,然后如果第二个字母是小写的话,会把其首字母变成小写。

提问复习JdbcTemplate类,由于上次讲解的节奏很快,发现很多人没有完全搞明白,今天继续进行详细讲解。
JdbcTemplate内部可以设计成按照一个非常标准流程来执行JDBC的一条sql操作,但是,它无法事先知道用户具体要执行怎样的sql操作,即无法用户是要执行增加、还是删除、还是修改的sql语句,也就是执行到生成PreparedStatement对象时,它就不知道该如何生成了,因此JdbcTemplate将生成PreparedStatement对象的任务委托给用户,说:“请你给我一个PreparedStatement对象,好吗?”所以,用户应向JdbcTemplate提供sql语句,向JdbcTemplate提供sql语句无非也就是为了生成PreparedStatement对象,如果用户向JdbcTemplate提供一个PreparedStatement对象,也就等于向其提供了要执行的sql语句,因为PreparedStatement对象中包含了sql语句。
提问:向JdbcTemplate提供Statement对象能让其知道要执行的sql语句吗?帮助大家加深理解Statement与PreparedStatement的差别之一。

用户可以给JdbcTemplate提供一个sql语句(原材料),也可以直接给它一个preparedstatement对象,还给它一个preparedstatement对象的生产器。JdbcTemplate有了preparedstatement对象后,它再如何执行preparedstatement对象和处理返回结果时又犯难了,又通过一个PreparedStatementCallback对象来委托给用户自己处理。如果仅仅是增加、删除、修改的sql语句,JdbcTemplate可以采用简单的方式进行处理,因此可以不需要呼叫一个PreparedStatementCallback对象来处理,对于这种情况,使用update方法来专门处理。在提供preparedstatement后,还需要提供preparedstatementsetter对象来进一步设置参数。对于查询的处理比较复杂,使用query方法来专门处理,query方法也有多种形式:ResultSetExtractor把整个结果集给你,你自己负责while循环处理。用于不需要循环结果的情况,例如,得到表结构,得到max(id)这样的情况。RowCallbackHandler:我每遇到一行时,都交给你去处理,我不问处理结果。ResultReader扩展了RowCallbackHandler:我每遇到一行时,都交给你去处理,我相信你会把每行的结果放到一个集合中,我等会调用getResults方法来获得那个集合,示例代码如下:
MyResultReader implements ResultReader
{
List list = new Vector();
processRow(Result rs)
{
list.add(rs.getString(2));
}

List getResults()
{
return list;
}
}

直接用网页往数据库里插入数据,运行效率更高,为什么不这么做?软件分层设计的好处,可维护性,面向对象带来的好处等等。RowMapper的作用:spring请你帮个忙:“我不知道把这一条记录变成一个怎样的对象,你帮我做吧”

通过使用了一段时间的spring,请用你自己话说说什么是框架:框架让我们将原来必须用程序代码写的东西变成了通过书写XML即可完成。
学员锻炼:以JdbcTemplate为例,上台讲解策略模式。

讲解BatchPreparedStatement,回顾区分statement.addbatch和prestatement.addbatch。

李杰完成的实验结果:网络断线多长时间,rs.next都可以,但时间较长,cn.createStatement就不行了。
原因与实际问题的思考:网络是虚连接,应考虑web server与database server不在同一台服务器上的时候,网络断线或database server重新启动的情况,这也是cn.createStatement有可能失败的原因之一。这个实验最好还是配合Statement.setFetchSize/getFetchSize再试试!

如果类A实现了两个接口X和Y,而另外一个类B的两个同名方法分别以一个接口X或Y作为参数,调用类B的该方法,并以类A的实例对象作为参数,会有什么问题呢?可以自己进行强制转换。

作业:接着spring的rowmapper把数据库表中的记录变成一个对象集合返回,再把集合打印出来。

教学心得:有些关键的、宝贵的思想,老师虽然讲解出来了(可能只是十几秒钟),但是,学员们不一定能够意思到其重要性,过后很容易忘记,老师应把这样的东西作为faq提出来,并要求学员们作为问题自己提问,例如,使用preparedstatement的优点等。


分享到:
评论

相关推荐

    日记工具,日记软件,个人日记

    本软件起到了一个个人日记的功能。 日记记录的内容全部存放在tool\5b\artdiary.gtz下面,如果记录数量比较多的情况下,可以手工备份此文件,以免以外情况下丢失数据。 日记中的心情与天气,可以选择,也可以手工...

    唐骏日记,唐骏日记,唐骏日记

    《唐骏日记》是著名企业家、职业经理人唐骏的一部个人著作,它记录了唐骏在IT行业的职业生涯和个人成长的心路历程。唐骏作为中国IT界的标志性人物,他的经历和见解对于理解中国互联网和科技产业的发展具有重要的参考...

    Android代码-移动日记本功能包含传统的日记本和音频日记视频日记实现私密日记和普通日记。.zip

    总的来说,"Android代码-移动日记本功能包含传统的日记本和音频日记视频日记实现私密日记和普通日记"这个项目涵盖了Android应用开发的多个方面,包括UI设计、数据管理、多媒体处理、安全性和测试等核心知识点。...

    微信小程序 小熊的日记 (源码)

    微信小程序 小熊的日记 (源码)微信小程序 小熊的日记 (源码)微信小程序 小熊的日记 (源码)微信小程序 小熊的日记 (源码)微信小程序 小熊的日记 (源码)微信小程序 小熊的日记 (源码)微信小程序 小熊的日记 (源码)微信...

    SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2

    SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2

    2020年5月14日-25日完美日记抖音官号直播销售额.xls

    2020年5月14日-25日完美日记抖音官号直播销售额.xls

    爱日记多用户网络日记

    9、日记站后台管理目录为a,访问请直接用"域名/a",a目录可随意命名。建议后台管理目录。 10、日记后台管理分系统设置、管理员密码、用户管理、用户密码、日记管理和推荐管理几大块。 11、日记演示站 [七日记...

    行业数据-2020年5月25日完美日记抖音官号直播上架产品类型分布.rar

    这份资料“行业数据-2020年5月25日完美日记抖音官号直播上架产品类型分布.rar”包含了2020年5月25日那天,完美日记在抖音官方账号直播活动中产品的详细分类数据。从压缩包中的文件名“行业数据-2020年5月25日完美...

    (青春日记)多用户网络日记

    9、日记站后台管理目录为a,访问请直接用"域名/a",a目录可随意命名。建议后台管理目录。 10、日记后台管理分系统设置、管理员密码、用户管理、用户密码、日记管理和推荐管理几大块。 11、日记演示站 [ 青春日记],如...

    Dear Diary 桫椤日记

    这是一款仿真日记,也是我个人认为最优秀的日记。(用过效能日记等日记软件,但没有一款符合我心意,惟独这款日记深得我心) 喜欢写日记的人可以尝试,相信你们也会认同我的观点并喜欢上这款日记。 这是我最爱的一...

    行业数据-2020年5月11日-25日完美日记品牌相关视频发布数量.rar

    标题中的“行业数据-2020年5月11日-25日完美日记品牌相关视频发布数量”指的是在2020年5月11日至25日期间,针对完美日记这一美妆品牌的视频发布数量的数据统计。这可能是由市场研究、数据分析团队或品牌自身收集的...

    微信小程序源码 小熊的日记(学习版)

    微信小程序源码 小熊的日记(学习版)微信小程序源码 小熊的日记(学习版)微信小程序源码 小熊的日记(学习版)微信小程序源码 小熊的日记(学习版)微信小程序源码 小熊的日记(学习版)微信小程序源码 小熊的日记(学习版)...

    2020年5月25日完美日记抖音官号直播各产品销售额.xls

    2020年5月25日完美日记抖音官号直播各产品销售额.xls

    研发经理的日记(日记3篇)

    在阅读了这位研发经理的三篇日记后,我们可以从中提炼出一些关于软件开发与管理的重要知识点,这将对任何在IT行业中从事项目管理和技术领导的角色都有所启发。 首先,日记中可能涉及到了“代码”这一核心话题。作为...

    SAP 开发日记 SAP 开发日记SAP 开发日记

    SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记

    日记人asp多用户网络日记源码v3.8

    日记人多用户网络日记程序是一个漂亮精致的网络日记本,它界面美观、功能丰富、使用方便,包含了用户登录注册、日记本排行、日记搜索、日记管理、留言评论等功能,还有音乐播放、时钟日历、愿望小寺等小功能。...

    小程序源码 小熊的日记 (代码+截图)

    小程序源码 小熊的日记 (代码+截图)小程序源码 小熊的日记 (代码+截图)小程序源码 小熊的日记 (代码+截图)小程序源码 小熊的日记 (代码+截图)小程序源码 小熊的日记 (代码+截图)小程序源码 小熊的日记 (代码+截图)小...

    2020年5月25日完美日记抖音官号直播各产品销售量.xls

    2020年5月25日完美日记抖音官号直播各产品销售量.xls

    行业数据-2020年5月25日完美日记抖音官号直播各产品销售额.rar

    这个压缩包包含了一个名为“行业数据-2020年5月25日完美日记抖音官号直播各产品销售额.xls”的Excel文件,我们可以从中分析出多个与IT行业、电商直播、数据分析等相关的重要知识点。 1. **电商直播**: 电商直播是...

Global site tag (gtag.js) - Google Analytics