发表于: 2018-03-28 00:06:58
1 643
今天完成的事情:
任务1.17
编写DAO,分别JdbcTemplate和Mybatis连接数据库,注意使用JDBCTemplate的时候分离Interface和Imple,使用Mybatis的时候注意理解为什么不需要Impl,注意遵守命名规范。
JdbcTemplate是Spring里的类,所以使用JdbcTemplate前先了解一下Spring。
百度百科定义:Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
简单来说Spring是个简化Java开发的框架,它是模块化的,有分层的体系结构,不同模块都可以独立的选择和使用。关键技术有依赖注入、面向切面编程等。
Spring框架提供了约20个模块,可以根据应用的要求来选择使用。
Core Container是核心容器,由核心(Core),Bean,上下文(Context)和表达式语言模块(SpEL)组成。
核心模块提供了框架的基础组成部分,包括控制反转(IOC)和依赖注入(DI)功能。
Bean模块提供BeanFactory,是一个工厂模式的复杂实现。
上下文模块建立在核心和Bean模块提供的坚实基础上,可以访问任务Spring容器管理的对象。
数据访问/集成层包括JDBC、ORM、OXM、JMS和事务处理模块。
JDBC模块简化了数据库的连接编码。
事务模块(Transactions)用于管理事务。
Web层的几个就不说了,另外几个中AOP模块提供了面向切面的编程实现,Aspects提供了与AspectJ的集成,AspectJ是一个面向切面编程的框架。
没提到的那些模块都是不太熟悉的,先建立个Spring的大概框架结构。
搭建Spring框架其实就是把Spring的Jar包加到项目工程里来,然后写一个核心配置文件就可以了。在项目中创建一个lib目录,然后把下载的Spring/libs下的jar包都复制进来,再选中所有Jar包后右键Bulid Path>Add To Build Path,将它们加入到项目的依赖库中。
Spring需要导入的基础Jar包如下:
每一个Jar包就是一个功能模块,非常清晰明了。如果项目中用不到某个模块的功能,不导入相关Jar包也是可以的。上图第一个Jar包commons-logging-1.1.1是日志相关的,不是Spring自带的包,需要从网上下载,不导入这个包的话Spring无法运行,相当于一个Spring框架必须的依赖包吧。
commons-logging-1.1.1.jar是管理日志的上层抽象,可以方便转换使用的日志工具。例如配置了log4j,就会调用log4j日志,没有的话就会调用JDK的log日志等等。
导入完包后,在src目录下建一个xml文件作为Spring的核心配置文件,一般叫做Beans.xml或者ApplicationContext.xml之类的。内容如图:
第8-10行是后来加的,其它行是基础配置,网上直接复制进来就行。8-10行配置了一个bean,id是Student,当程序运行后Spring框架就会创建并保存Student这个对象,前提是Student类存在并且class路径写得正确。需要使用Student对象时就可以通过Spring获取了而不需要手动new。
Student类:
以上就算是搭建好Spring环境了,然后再建一个类,编写一个main函数来测试是否能运行成功。
main函数里11行是通过配置文件生成上下文环境,12行由上下文环境来根据id获取到了bean对象。
这两个方法算是刚接触Spring框架里比较重要的了,当然也有其它方法来获取上下文和bean。
运行后成功输出结果:
使用JdbcTemplate连接数据库,首先需要配置数据源:
然后写一个测试的DAO实现类:
程序运行成功,不过当参数name为中文时会查不到对应结果,感觉应该是和编码相关的问题。
明天计划的事情:
学习JdbcTemplate的API,并解决上述参数为中文时查不到结果的问题。
继续任务1.17另一半,使用mybatis连接数据库。
继续下面的任务。
遇到的问题:
使用JdbcTemplate连接数据库时失败,原因是没有导入连接数据库的驱动包mysql-connector-java-5.1.46-bin;
执行查询时出错,原因是xml文件里没有配置DAO类的bean,导致属性无法注入到DAO的实现类中(setter方式注入)。
收获:
学习了Spring框架的作用及体系结构。
学习了Spring环境的搭建。
学习了使用JdbcTemplate连接数据库的方法。
评论