Spring精品教程资料:3.MyBatis与Spring的整合
- 格式:pptx
- 大小:1.12 MB
- 文档页数:31
SpringMVC+Spring+Hibernate框架整合原理,作⽤及使⽤⽅法SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使⽤spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎原理:SpringMVC:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调⽤业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责将结果显⽰到客户端Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们中的类,当然也包括service dao⾥⾯的),有了这个机制,我们就不⽤在每次使⽤这个类的时候为它初始化,很少看到关键字new。
另外spring的aop,事务管理等等都是我们经常⽤到的。
Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。
mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。
mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。
在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。
使⽤⽅法:要完成⼀个功能:1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。
2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进⾏的那些操作,⽐如 insert、selectAll、selectByKey、delete、update等。
spring整合mybatis错误:classpathresource[configspr。
spring 整合Mybatis运⾏环境:jdk1.7.0_17+tomcat 7 + spring:3.2.0 +mybatis:3.2.7+ eclipse 错误:class path resource [config/spring/springmvc.xml] cannot be opened because it does not exist 错误原因:找不到我的springmvc.xml,在下⾯web.xml中是我引⽤路径,⽹上找到问题classpath指向路径不是resource路径,所以⼀直找不到我的xml⽂件, classpath:到你的class路径中查找⽂件, classpath*:不仅包含class的路径,还包括jar⽂件中(class路径)进⾏查找 解决办法:在classpath后⾯在上“*” 可解决问题,“classpath*:springmvc.xml” 错误代码:1 2017-04-05 08:15:10 [org.springframework.web.servlet.DispatcherServlet]-[INFO] FrameworkServlet 'springmvc': initialization started2 2017-04-05 08:15:10 [org.springframework.web.context.support.XmlWebApplicationContext]-[INFO] Refreshing WebApplicationContext for namespace 'springmvc-servlet': startup date [Wed Apr 05 08:15:10 CST 2017]; parent: Root WebApplica3 2017-04-05 08:15:10 [org.springframework.beans.factory.xml.XmlBeanDefinitionReader]-[INFO] Loading XML bean definitions from class path resource [springmvc.xml]4 2017-04-05 08:15:10 [org.springframework.web.servlet.DispatcherServlet]-[ERROR] Context initialization failed5 org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [springmvc.xml]; nested exception is java.io.FileNotFoundException: class path resource [springmvc.xml] canno6 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)7 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)8 at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)9 at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)10 at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)11 at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)12 at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)13 at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)14 at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)15 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)16 at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:647)17 at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598)18 at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661)19 at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517)20 at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458)21 at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138)22 at javax.servlet.GenericServlet.init(GenericServlet.java:160)23 at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)24 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)25 at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865)26 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)27 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)28 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)29 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)30 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)31 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)32 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)33 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)34 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)35 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)36 at .JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)37 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)38 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)39 at ng.Thread.run(Thread.java:722)40 Caused by: java.io.FileNotFoundException: class path resource [springmvc.xml] cannot be opened because it does not exist41 at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:157)42 at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)43 ... 33 more 相关代码:web.xml 配置:1<?xml version="1.0" encoding="UTF-8"?>2<web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" 3<display-name>Springmvc_Mybits_store</display-name>4<!-- 加载spring容器 -->5<context-param>6<param-name>contextConfigLocation</param-name>7<param-value>classpath:applicationContext-*.xml</param-value>8</context-param>9<!-- 监听器,扫描通配符 -->10<listener>11<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>12</listener>13<!-- 前端控制器配置 -->14<servlet>15<servlet-name>springmvc</servlet-name>16<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>17<!--加载springmvc.xml配置-->18<init-param>19<param-name>contextConfigLocation</param-name>20<param-value>classpath:springmvc.xml</param-value>21</init-param>22</servlet>23<!-- servlet映射 -->24<servlet-mapping>25<servlet-name>springmvc</servlet-name>26<url-pattern>*.action</url-pattern>27</servlet-mapping>28<welcome-file-list>29<welcome-file>index.html</welcome-file>30<welcome-file>index.htm</welcome-file>31<welcome-file>index.jsp</welcome-file>32<welcome-file>default.html</welcome-file>33<welcome-file>default.htm</welcome-file>34<welcome-file>default.jsp</welcome-file>35</welcome-file-list>36</web-app>。
一搭建三大框架步骤1 搭建s2sh步骤分析:1.1在MyEclipse 里面新建一个 java web project1.2新建三个 Source Folder :src : 源文件config : 存放配置文件 : hibernate , spring , struts2test: 测试类1.3 导入环境需要的jar 包 : WebRoot/WEB-INF/lib (一共64个)2 搭建Hibernate 和Spring 整合(*根据搭建需求谁能先测试就先搭建谁)2.1 在 src 源文件里面建立一个 cola.s2sh.domain[并且在该包下创建一个持久类和该类的映射文件] .2.2 配置核心文件在 config 里面建立一个hibernate 文件夹里面创建hibernate.cfg.xml配置文件(里面的内容拷贝就可以)2.3 在spring 文件夹里面创建并且把sessionFactory 交给spring 来管理: [applicationContext-db.xml中引入][<bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"><value>classpath:hibernate/hibernate.cfg.xml</value> </property></bean>]在 applicationContext.xml 中 : 导入<import resource="applicationContext-db.xml"/>2.4 测试sessionFactory[编写SpringUtils 然后继承这个][public class SpringUtils {public static ApplicationContext context;static {context = newClassPathXmlApplicationContext("spring/applicationContext.xml" );}}]2.5 编写 dao .service 的包类和接口;PersonDaoImpl 要继承HibernateDaoSupport[public class PersonDaoImpl extends HibernateDaoSupport implements PersonDao {public void savePerson(Person person) {this.getHibernateTemplate().save(person);}}]2.6 把 dao ,service 放在spring 容器中:[<bean id="personDao"class="cola.s2sh.daoImpl.PersonDaoImpl"> <property name="sessionFactory"><ref bean="sessionFactory"/></property></bean><bean id="personService"class="cola.s2sh.service.impl.PersonServiceImpl"><property name="personDao"><ref bean="personDao"/></property></bean>]2.7 完成 spring 声明式处理 :[<!-- 事务管理 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory"/></property></bean><tx:advice id="tx"transaction-manager="transactionManager"><tx:attributes><tx:method name="save*"read-only="false"/><tx:method name="update*"read-only="false"/><tx:method name="delete*"read-only="false"/><!--除了上面三种情况以外的情况--><tx:method name="*"read-only="true"/></tx:attributes></tx:advice><aop:config><aop:pointcutexpression="execution(* cola.s2sh.service.impl.*.*(..))"id="perform"/><aop:advisor advice-ref="tx"pointcut-ref="perform"/> </aop:config>]2.8 整合struts 创建 action 类包 ;2.9 把action 放在spring 容器中* 注意在personAction的spring的配置中一定要写一个属性scope="prototype"[<bean id="personAction"class="cola.s2sh.action.PersonAction" scope="prototype"><property name="personService"><ref bean="personService"/></property></bean>]在这个中引入下面3.0 编写struts2中配置文件Struts –person.xml中Struts.xml3.1 编写web .xml文件[<?xml version="1.0"encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0"><display-name>cola.s2sh</display-name><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><!—将srping放在SrvletContext中进行加载当servlet加载时 spring 也完成加载 --> <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext.xml</param-value> </context-param><filter><filter-name>OpenSessionInViewFilter</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping><filter-name>OpenSessionInViewFilter</filter-name><url-pattern>*.action</url-pattern></filter-mapping><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter -class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>]二原理分析:一、 Struts 2框架整合Spring步骤1、复制文件。
--src|-com.ssm|-action|-LoginAction.java|-entity|-User.java|-iface|-IUserDao.java|-impl|-UserDao.java|-seriface|-IUserServices.java|-impl|-UserServices.java|-sqlmap|-User.xmlapplicationContext.xmldatabase.Propertieslog4j.PropertiesmyBatis-config.xmlstruts.Propertiesstruts.xmlok直接上代码了:Action类: LoginAction.javapackage com.ssm.action;import java.util.ArrayList;import java.util.List;import com.opensymphony.xwork2.Action;import er;import com.ssm.seriface.IUserService;public class LoginAction implements Action{private User user;private IUserService userServices;public void setUserServices(IUserService userServices) {erServices = userServices;}public User getUser(){return user;}public void setUser(User user){er = user;}public String execute() throws Exception{String aaa= getUser().getId()+"";List userList= new ArrayList();userList= userServices.selectUserById(getUser().getId()); if(userList.size()>0){return Action.SUCCESS;}else{return Action.ERROR;}}}实体类User.javapackage com.ssm.entity;import java.io.Serializable;import java.util.Date;public class User implements Serializable{private int id;private String name;private String password;private Date birthday;public User(){}public User(String name, String password, Date birthday) {= name;this.password= password;this.birthday= birthday;}public int getId(){return id;}public void setId(int id){this.id = id;}public String getName(){return name;}public void setName(String name){ = name;}public String getPassword(){return password;}public void setPassword(String password){this.password = password;}public Date getBirthday(){return birthday;}public void setBirthday(Date birthday){this.birthday = birthday;}}IUserDao接口类IUserDao.javapackage com.ssm.iface;import java.util.List;public interface IUserDao{public boolean userVaild(String name, String password);public List selectUserById(int id);}UserDaoImpl实现接口类:UserDaoImpl.javapackage com.ssm.iface.impl;import java.util.List;import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import com.ssm.iface.IUserDao;//import com.ssb.baseutil.SqlMapClientDaoSupport;//import com.ssb.iface.IUserDao;//import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; public class UserDaoImpl extends SqlMapClientDaoSupport implements IUserDao {public List selectUserById(int id){// TODO Auto-generated method stubreturn getSqlMapClientTemplate().queryForList("selectUserById", id);}public boolean userVaild(String name, String password){// TODO Auto-generated method stubreturn false;}/*public boolean userVaild(String name, String password){return false;}public List selectUserById(String id){return getSqlMapClientTemplate().queryForList("getUserById", id);}*/}业务类IUserServices.javapackage com.ssm.seriface;import java.util.List;public interface IUserService{public boolean userVaild(String name, String password); public List selectUserById(int id);}UserServicesImpl.javapackage com.ssm.seriface.impl;import java.util.List;import com.ssm.iface.IUserDao;import com.ssm.seriface.IUserService;public class UserServiceImpl implements IUserService{private IUserDao serviceUserDao= null;public IUserDao getServiceUserDao(){return serviceUserDao;}public void setServiceUserDao(IUserDao serviceUserDao) {this.serviceUserDao = serviceUserDao;}public List selectUserById(int id){// TODO Auto-generated method stubreturn serviceUserDao.selectUserById(id);}public boolean userVaild(String name, String password){// TODO Auto-generated method stubreturn erVaild(name, password);}}mybatis实体配置文件User.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC"-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd"><mapper namespace="user"><resultMap type="User" id="userResultMap"><id property="id" column="ID"/><result property="name" column="NAME"/><result property="password" column="PASSWORD"/><result property="birthday" column="BIRTHDAY"/></resultMap><select id="selectUserById" parameterType="ng.String" resultType="User"><![CDATA[SELECT * FROM USER SUWHERE SU.ID = #{id}]]></select></mapper>sprng配置文件applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p" xmlns:context="/schema/context"xmlns:jee="/schema/jee" xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.5.xsd/schema/context/schema/context/spring-context-2.5.xsd/schema/jee/schema/jee/spring-jee-2.5.xsd/schema/tx/schema/tx/spring-tx-2.5.xsd"><!-- 数据源属性配置文件--><!-- <bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:com/databaseconfig/database.properties"/></bean>--><context:property-placeholder location="classpath:database.properties"/><bean id="dataSource" class="boPooledDataSource"><property name="driverClass" value="${jdbc.driverClassName}" /><property name="jdbcUrl" value="${jdbc.url}" /><property name="user" value="${ername}" /><property name="password" value="${jdbc.password}" /><property name="autoCommitOnClose" value="true"/><property name="checkoutTimeout" value="${cpool.checkoutTimeout}"/><property name="initialPoolSize" value="${cpool.minPoolSize}"/><property name="minPoolSize" value="${cpool.minPoolSize}"/><property name="maxPoolSize" value="${cpool.maxPoolSize}"/><property name="maxIdleTime" value="${cpool.maxIdleTime}"/><property name="acquireIncrement" value="${cpool.acquireIncrement}"/><property name="maxIdleTimeExcessConnections" value="${cpool.maxIdleTimeExcessConnections}"/> </bean><!-- 数据连接管理--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!-- myBatis文件--><!--<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation" value="classpath:myBatis-config.xml"/></bean>--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="configLocation" value="classpath:myBatis-config.xml"/><property name="dataSource" ref="dataSource"/></bean><!-- ibatis2.x 配置<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="configLocation" value="classpath:myBatis-config.xml"/><property name="dataSource" ref="dataSource"/></bean>--><bean id="mapDao" class="org.mybatis.spring.MapperFactoryBean"><!-- 这里是接口,不是接口实现类了--><property name="mapperInterface" value="com.ssm.iface.IUserDao"/><property name="sqlSessionFactory" ref="sqlSessionFactory"/></bean><bean id="userServices" class="erServiceImpl"><property name="serviceUserDao" ref="mapDao"/></bean><bean id="LoginAction" class="com.ssm.action.LoginAction"><property name="userServices" ref="userServices"/></bean></beans>数据库连接属性配置文件(其实可以不用这么复杂)database.Propertiesjdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/ddtest?characterEncoding=utf8 ername=rootjdbc.password=123cpool.checkoutTimeout=5000cpool.minPoolSize=20cpool.maxPoolSize=50cpool.maxIdleTime=7200cpool.maxIdleTimeExcessConnections=1800cpool.acquireIncrement=10log4j 随便到log4j里copy一个吧mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC"-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><typeAliases><typeAlias alias="User" type="er"/></typeAliases><mappers><mapper resource="com/ssm/sqlmap/User.xml" /></mappers></configuration>struts配置文件struts.Properties##整合spring的struts.objectFactory=springeClassCache = truestruts.locale=zh_CNstruts.i18n.encoding=GBKstruts的Action配置文件struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="style" extends="struts-default"><!--<action name="loginAction" class="sys.style.design.action.LoginAction"> <result name="success">success.jsp</result><result name="error">error.jsp</result></action>--><action name="loginAction" class="com.ssm.action.LoginAction"><result name="success">success.jsp</result><result name="error">error.jsp</result></action></package></struts>。
Spring和MyBatis整合⾃动⽣成代码⾥⾯text类型遇到的坑Spring和MyBatis整合以后,使⽤⾃动⽣成代码⼯具⽣成dao和mapper配置⽂件,⽣成步骤如下(以Intelli idea为例)。
1.编写⽣成代码配置⽂件generatorConfig.xml。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-////DTD MyBatis Generator Configuration 1.0//EN""/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><classPathEntry location="D:\dev\maven\repository\mysql\mysql-connector-java\5.1.39\mysql-connector-java-5.1.39.jar"/><context id="DB2Tables" defaultModelType="flat" targetRuntime="MyBatis3"><commentGenerator><property name="suppressDate" value="true"/><!-- 是否去除⾃动⽣成的注释 true:是: false:否 --><property name="suppressAllComments" value="false"/></commentGenerator><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/mycollege?characterEncoding=utf-8"userId="root"password="root"></jdbcConnection><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!-- ⽣成模型的包名和位置 --><javaModelGenerator targetPackage="com.cx.elearnning.model"targetProject="src/main/java"><property name="enableSubPackages" value="true"/><property name="trimStrings" value="true"/></javaModelGenerator><!-- generate xml --><sqlMapGenerator targetPackage="/"targetProject="src/main/resources/mapper"><property name="enableSubPackages" value="true"/></sqlMapGenerator><!-- generate Mapper --><javaClientGenerator type="XMLMAPPER" targetPackage="com.cx.elearnning.dao"targetProject="src/main/java"><property name="enableSubPackages" value="true"/></javaClientGenerator><!--需要⾃动⽣成的表名和对应的model名--><table tableName="sys_user" domainObjectName="SysUser"></table></context></generatorConfiguration>2.配置如下maven运⾏命令。
springboot整合mybatis基于注解开发传入对象Spring Boot是一个用于构建基于Spring的应用程序的框架,而MyBatis是一个非常流行的Java持久层框架。
利用注解是一种非常简洁的开发方式,可以减少繁琐的配置,提高代码的可读性和易维护性。
本文将介绍如何使用Spring Boot整合MyBatis基于注解开发传入对象。
首先,我们需要在POM文件中添加Spring Boot和MyBatis的相关依赖。
```xml<dependencies><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- MyBatis Starter --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version></dependency><!-- MySQL Connector --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency></dependencies>```接下来,我们需要配置数据库连接和MyBatis的相关配置。
第一章【思考题】1、请简述Spring框架的优点。
2、请简述什么是Spring的IoC和DI。
【答案】1、Spring框架的优点如下:(1)非侵入式设计:Spring是一种非侵入式(non-invasive)框架,它可以使应用程序代码对框架的依赖最小化。
(2)方便解耦、简化开发:Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,大大的降低了组件之间的耦合性。
(3)支持AOP:Spring提供了对AOP的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提高了程序的复用性。
(4)支持声明式事务处理:只需要通过配置就可以完成对事务的管理,而无需手动编程。
(5)方便程序的测试:Spring提供了对Junit4的支持,可以通过注解方便的测试Spring 程序。
(6)方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。
(7)降低了Java EE API的使用难度:Spring对Java EE开发中非常难用的一些API (如:JDBC、JavaMail等),都提供了封装,使这些API应用难度大大降低。
2、IoC的全称是Inversion of Control,中文名称为控制反转。
控制反转就是指在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring 容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。
这样,控制权由应用代码转移到了Spring容器,控制权发生了反转。
DI的全称是Dependency Injection,中文称之为依赖注入。
它与控制反转(IoC)的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。
从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入。
SSI框架搭建SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6编号:SSI-SMVC3-S3-I3版本:V1.0级别:公开编写时间:2016-02-17目录1 导言 (1)1.1 目的 (1)1.2 范围 (1)1.3 说明 (1)2 搭建SpringMVC (2)2.1 搭建所需jar包 (2)2.2 其他依赖包 (3)2.3 搭建步骤 (4)2.3.1 创建项目 (4)2.3.2 导入jar包 (6)2.3.3 配置web.xml (7)2.3.4 配置spring-servlet.xml (9)2.3.5 配置applicationContext.xml (10)2.3.6 配置log4j.properties (10)3 整合mybatis (11)3.1 整合所需jar包 (11)3.2 其他依赖包 (11)3.3 整合步骤 (11)3.3.1 导入jar包 (11)3.3.2 配置config.properties (12)3.3.3 配置spring-dataSource.xml (12)3.3.4 配置applicationContext.xml (15)3.3.5 配置mybatis-config.xml (16)3.3.6 创建实体model (17)3.3.7 创建实例化dao (19)3.3.8 创建业务服务service (21)3.3.9 创建控制层controller (23)3.3.10 页面代码 (28)3.3.11 启动项目 (37)1导言1.1 目的本文档是根据个人的工作经验搭建的轻量级SSI框架,也是实际应用中比较全面的基础框架,用于指导SSI框架初学者学习搭建SSI框架,希望能给各位使用者提供帮助,同时也希望朋友们尽量去帮助其他人。
1.2 范围本次框架搭建的版本是SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6,数据库采用的是mysql,在eclipse开发工具下搭建直接搭建的web项目,页面采用的是h5,ajax实现数据访问,如果页面为jsp等,则修改controller的返回类型即可。