入职第一天,项目经理要求利用SSM+MySQL做一个表单的CRUD;之前没用过mybatis,恶补了一下:http://www.jb51.net/article/70923.htm。
spring三层架构: ①、DAO(IxxxDAO:接口(spring代理方式产生事务,有接口产生具体代理类)、xxxDAO实现类) ;
②、entity;
③、service(IxxxManger:接口、实现类);
④、controller
(一)先搭建springMVC:
2016/07/30补充:项目搭建的前几天一直出现一个错误:org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class(就是在写完<context:component-scan base-package="包名" />之后,如果包名写错启动也不报错,但只要扫描的包 内有个类哪怕空白都报错。)
报错原因:不详,希望高人指点。当前使用的是spring3.2.0的包+tomcat7+jre1.8+eclipse;(此环境下导入能在jdk6+tomcat6运行的springMVC的demo 报错:java.lang.IllegalArgumentException),项目的配置、操作流程确定无误,因为换spring4.1.6后成功了。有人说换回jdk6+tomcat6可成功,但没试,目前无法确定。
1、导入spring-framework-4.1.6.RELEASE文件下libs目录的所有jar
2、配置web.xml
3、配置springMVC.xml
4、启动,测试搭建是否成功
错误一:java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component
解决方案:加入commons-logging.jar
(二)接下来搭建spring:
1、web.xml
2、spring.xml
spring可以拿到springMVC的注释
3、启动,测试搭建是否成功
(三)最后加入mybatis
1、导入jar包:mybatis-3.1.1.jar、mysql-connector-java-5.1.38-bin.jar
2、配置spring.xml
①注入数据源(测试无异常)
②注入sqlSessionFactory
出现错误:org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class
解决方案:导入mybatis-spring-1.2.1.jar
3、创建entity,如User.java(对应数据库表),映射文件userMapper.xml
4、创建DAO,如IUserDAO.java、UserDAOImp.java(原生DAO注入,还有一种是mapper注入——日后了解)
5、启动服务器,无异常,测试成功
service层下的测试文件:
controller层下的测试文件:
菜鸟总结:1、package的命名:com或org + 公司名 + 项目名 + ...
2、任何一个项目的开始都要先搭建好环境,再写代码
3、之前每做一步都习惯性用JUnit进行测试,出现问题可以及时解决。jar包也是,需要哪个导哪个。确认连接无误后却一直取不到sqlsession的值,才晓得JUnit作为单元测试的工具,不用在web层中达不到效果。测试web层的工具:spring-test(日后了解)
知识点巩固:1、spring和springMVC的配置文件有一个扫描注入即可(一起写报错,最好写在springMVC);
2、spring和mybatis整合后不再需要些mybatis的配置文件
3、数据流向: