springMVC+spring+MyBatis有着诸多好处(度娘为你一一解答)
话不多说直插主题(有人问“主题”是谁,这个自己去补脑)
版本:
spring 3.2.9
MyBatis 3.2.8
目前依赖这些jar,以后有新功能再引进新的jar
导入jar包后 需要配置web.xml
首先配置spring容器
<!-- Spring 容器加载 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
在实际项目中spring的配置文件applicationcontext.xml是通过spring提供的加载机制,自动加载的容器中去,在web项目中,配置文件加载到web容器中进行解析,目前,spring提供了两种加载器,以供web容器的加载:一种是ContextLoaderListener,另一种是ContextLoaderServlet。这两种在功能上完全相同,只是一种是基于Servlet2.3版本中新引入的Listener接口实现,而另一种是基于Servlet接口实现。
以下是这两种加载器在web.xml中的时机配置应用:
<!-- 第一种:-->
<listener>
<listener-class>org.springframework.context.ContextLoaderListener</listener-class>
</listener>
<!-- 第二种:-->
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 加载配置文件路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param>
由上配置 我的配置文件名称为beans.xml放在根目录下
以上就是web.xml对spring的配置内容,接下来看spring配置文件即beans.xml文件的中的配置信息
在src下创建beans.xml文件
头文件可以在网上或者spring文档中找到这里我就不贴出来了
因为都交付给spring容器来管理了,所以我们的数据源的配置也可以在beans.xml配置
<!-- 配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
数据源的参数可以配置properties文件来配置,这样更大的减小耦合性,比如以后修改数据库或者部署到新的服务器就不需要修改beans.xml文件,则只修改properties文件就可以了,properties配置这里先不说。
以上spring的配置可以确保平台的运行。
然后在web.xml中配置springMVC
首先回到web.xml文件配置springMVC控制器和拦截器,这块可以放在配置spring下面
其实从本质上来说springMVC也是servlet 熟悉servlet的同学应该深有感触。直接插吧不废话了
<!-- SpringMVC的前端控制器 -->
<servlet>
<servlet-name>MyDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 加载配置文件路径 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:SpringMVC-servlet.xml</param-value>
</init-param>
<!-- 何时启动 大于0的值表示容器启动时初始化此servlet,正值越小优先级越高 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Spring MVC配置文件结束 -->
<!-- SpringMVC拦截设置 -->
<servlet-mapping>
<servlet-name>MyDispatcherServlet</servlet-name>
<!-- 由SpringMVC拦截所有请求 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- SpringMVC拦截设置结束 -->
上面的配置我没有写后缀在正式的项目中大多数都有后缀比如.do或者.action 等
如果需要后缀则需要修改springMVC拦截设置
<!-- 拦截.do -->
<url-patern>*.do</url-patern>
<!-- 拦截 .action -->
<url-patern>*.action</url-patern>
springMVC的配置文件我也放到src下所以上面的加载配置文件应该按照项目中的实际路径去写
springMVC在web.xml中配置完成接下来配置SpringMVC-servlet.xml
如果你没有给servlet 制定配置文件的位置,那么名称为【 servlet-name】-servlet.xml 文件位置应该是WEB-INF/ 下 。
为了方便管理所以制定配置文件位置。如果都没有则会报错。
配置SpringMVC-servlet.xml文件
配置文件中需要上下文和注解驱动所以勾选mvc 和 context
<!-- springmvc 注解驱动 -->
<mvc:annotation-driven/>
<!-- 自动扫描注解的bean -->
<context:component-scan base-package="com.yong" />
<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/views/" p:suffix=".jsp" />
添加注解驱动、制定自动扫描的目录以及以下目录
最重要的一点配置视图解析器 并且设置前置目录和后缀名。
以上对springMVC配置完成。
配置MyBatis
由于MyBatis交给spring管理所以在beans.xml中配置SqlSessionFactoryBean 和 MapperFactoryBean
至于SqlSessionFactoryBean和MapperFactoryBean是做什么的可以查看一下连接
具体配置如下
<!-- 配置SqlSessionFactoryBean -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 加载MyBatis配置文件路径 -->
<property name="configLocation" value="classpath:MyBatisConf.xml" />
</bean>
<!-- 配置MapperFactoryBean -->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.yong.mapper.UserMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
由于交给spring管理
所以MyBatisConf.xml中则仅仅配置<mappers>即可
<configuration>
<!-- 配置Mapper文件的路径 -->
<mappers>
<package name="com.yong.mapper"/>
</mappers>
</configuration>
以上的以上就是配置完所有的内容(暂时的)
啥也不说了执行一下子
先说一下流程 引用一张图,(图片是从腾讯课堂老师讲课截的图,老师名字忘了)
添加一个用户测试一下子
首先配置一下数据库
看一下文件目录
1、首先创建实体
User 和数据字段保存一致
注解@Component:基本注解,标识一个spring管理的类
首先用户执行添加方法
@Controller 控制层
数据提价给业务逻辑
@service 业务逻辑层
业务处理完后交给持久层保存数据库
先写一个接口然后再写实现这块也可以只用一个实现类来完成由于使用了mapper 。
@Repository 持久层
最后看看UserMapper是怎么保存数据的
@Autowired自动执行
最后看看和mapper同名的xml文件如何写数据库
代码都写完了装逼时刻开始
添加页面添加方法
数据库添加成功
装逼成功!
以上完整代码:下载完整代码