基于注解配置简单的SpringMVC+Mybatis
SpringMVC+Mybatis框架配置过好几次了,现在貌似终于对这些东西有些了解,自己草草的总结一下,也是再学习的一个过程。
首先,准备jar包,这个就不在赘述了。
然后就来肉戏了,以下只是我的理解,不足之处请指出,轻喷。
web.xml是一个web程序的入口,当web程序启动时,首先找web.xml。先把web.xml所有配置先贴出来。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>SpringMVC</display-name><!-- 项目默认页面 --><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- 配置文件位置 --> <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext.xml</param-value></context-param><!-- 上下文Spring监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><!-- 字符集过滤器 --> <filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- servlet控制跳转 --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置文件 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC/context-dispatcher.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
</web-app>
这两项,不用说了吧。
<span style="white-space:pre"> </span><display-name>SpringMVC</display-name><!-- 项目默认页面 --><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
web.xml读到这个位置,就去找这个位置下的配置文件了,这个文件是spring容器的配置,监听器不用多说。
<!-- 配置文件位置 --> <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext.xml</param-value></context-param><!-- 上下文Spring监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
配置spring的文件
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:component-scan base-package="com.test" /><beanclass="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /><!--创建jdbc数据源 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /><property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" /><property name="username" value="scott" /><property name="password" value="tiger" /></bean><!-- 创建SqlSessionFactory,同时指定数据源 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation" value="classpath:mybatis/mybatis-config.xml" /></bean><bean id="sqlTemplate" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg index="0" ref="sqlSessionFactory" /></bean>
</beans>
很简单,配置一个扫描包,就是扫描这个包下面的所有java类,如果需要spring来动态生成这个类,就给class加一个标签,这个后面会贴出来。再配置一个自动注解。数据源不用多说,配置持久化工厂,就是告诉spring要用哪种持久化方式,这里配置的是mybatis。最底下配置一个mybatis的sqlTemplate,用来进行持久化操作。这就是spring中所有的东西。因为是基于注解的,所以不用一个一个地配置bean,是不是很简单?
我们现在看看mybatis的配置:
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><typeAliases><typeAlias type="com.test.vo.EmpVo" alias="EmpVo" /></typeAliases><mappers><mapper resource="mybatis/mapper/empMapper.xml" /></mappers>
</configuration>
这个是mybatis的总配置,配置对应VO类的别名,还有具体mapper文件存放的位置。我们看看empMapper.xml
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="EmpVo"><select id="getEmpList" resultType="EmpVo">select empNo,eName,job fromEmp2</select><insert id="addEmp" parameterType="EmpVo">insert into emp2 values(#{empNo},#{eName},#{job})</insert><delete id="delEmpById" parameterType="EmpVo">delete from emp2 where empNo=#{empNo}</delete>
</mapper>
呵呵,SQL语句,这里注意id是唯一的,resultType是具体类,就是说查出来的字段应该和你的VO一一对应,当然也可以是系统类,int,string,都可以。但是这样不能满足复杂的查询,所以更多情况下我们使用resultMap,resultMap具体配置可以自行google或度娘 。
整个spring和持久化层的东西就搞完了,我们现在继续回到web.xml。
<!-- 字符集过滤器 --> <filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
这个是过滤器,和springMVC没什么关系,主要功能是将所有请求的编码格式改成UTF-8格式。
继续往下看:
<!-- servlet控制跳转 --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置文件 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC/context-dispatcher.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
这是配置MVC的部分,其实无论是SpringMVC还是structs,其实都是把servlet封装了,所以这里其实就是配置servlet。将带有后缀名为.do的http请求拦截(dispatch),然后根据配置去解析相应的请求。我们看看这个文件:
<beans default-lazy-init="true" xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 通过注解,把URL映射到Controller上,该标签默认注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter --> <mvc:annotation-driven /> <!-- 使用注解的包,包括子集 --> <context:component-scan base-package="com.samsung.controller" /> <!-- 视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp"></property> </bean>
</beans>
同样也是简单到爆啊有木有,加注解,加扫包,配置视图解析,视图解析的作用就是加前后缀,直接读文件。
整个springMVC的框架就搭好了,不到100行的Xml。当然,事务处理神马的没有加,最基本的东西已经配置好了,就可以用了。
总结一下:
web.xml是web程序入口,关于SpringMVC需要配置的有:配置Spring的文件位置,Spring监听器,MVC也就是servlet的配置;
spring文件中需要配置的有:扫包,自动注解,数据源,数据源工厂(在这里配置你的持久化方式),还有进行持久化操作的sqlTemplate;
mybatis配置的有:别名,mapper文件存放的位置,mapper文件配置具体的sql语句;
mvc的配置有:扫包,自动注解,视图解析。
下面附上代码结构和代码:
Controller
@Controller
public class TestController {@Autowiredprivate ITestSVC testSVC;@RequestMapping(value = "/list.do")public String select(HttpServletRequest request, Model model) {List<EmpVo> emps = testSVC.findAll();model.addAttribute("emps", emps);System.out.println(emps.size());return "list";}@RequestMapping(value = "/toAdd.do")public String toAdd(HttpServletRequest request, Model model) {return "add";}@RequestMapping(value = "/add.do")public String add(HttpServletRequest request, Model model) {EmpVo empVo = new EmpVo();empVo.setEmpNo(request.getParameter("empNo"));empVo.seteName(request.getParameter("eName"));empVo.setJob(request.getParameter("job"));testSVC.add(empVo);return "redirect:/list.do";}@RequestMapping(value = "/del.do")public String delEmp(HttpServletRequest request, Model model) {EmpVo empVo = new EmpVo();empVo.setEmpNo(request.getParameter("empNo"));testSVC.delete(empVo);return "redirect:/list.do";}}
ITestDao
public interface ITestDao {public void add(EmpVo emp);public void delete(EmpVo emp);public List<EmpVo> findAll();public void update(EmpVo emp);public EmpVo findOne(String id);
}
TestDaoImpl
@Repository
public class TestDao implements ITestDao {@Autowiredprivate SqlSessionTemplate sqlTemplate;@Overridepublic void add(EmpVo emp) {sqlTemplate.insert("addEmp", emp);}@Overridepublic void delete(EmpVo emp) {sqlTemplate.delete("delEmpById", emp);}@Overridepublic List<EmpVo> findAll() {List<EmpVo> list = new ArrayList<EmpVo>();list = sqlTemplate.selectList("getEmpList");return list;}@Overridepublic void update(EmpVo emp) {}@Overridepublic EmpVo findOne(String id) {return null;}
ITestSVC
public interface ITestSVC {public void add(EmpVo emp);public void delete(EmpVo emp);public List<EmpVo> findAll();public void update(EmpVo emp);}
TestSVCImpl
@Repository
public class TestSVCImpl implements ITestSVC {@Autowiredprivate ITestDao testDao;@Overridepublic void add(EmpVo emp) {testDao.add(emp);}@Overridepublic void delete(EmpVo emp) {testDao.delete(emp);}@Overridepublic List<EmpVo> findAll() {return testDao.findAll();}@Overridepublic void update(EmpVo emp) {testDao.update(emp);}}
EmpVo
public class EmpVo {private String empNo;private String eName;private String job;public EmpVo() {}public EmpVo(String empNo, String eName, String job) {super();this.empNo = empNo;this.eName = eName;this.job = job;}public String getEmpNo() {return empNo;}public void setEmpNo(String empNo) {this.empNo = empNo;}public String geteName() {return eName;}public void seteName(String eName) {this.eName = eName;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}
}
基于注解配置简单的SpringMVC+Mybatis相关推荐
- ajax注解解决中文乱码,基于注解的简单MVC框架的实现,以及jquery,prototype,ajax传输乱码问题的一点解决方法...
1:基于注解的简单MVC框架的实现 效果:1:用户只需要定义一些普通的java类来做为M层,也就是STRUTS的action类,该类里包含1到 N个控制方法,每个方法需要的form数据,由注解@Act ...
- Java学习 --- springSecurity基于注解配置
一.springSecurity基于注解配置 创建一个spring项目 1.pom.xml <?xml version="1.0" encoding="UTF-8& ...
- 带你简化理解Spring 基于注解配置的原理
1 需求说明 自己写一个简单的 Spring 容器, 通过读取类的注解 (@Component @Controller @Service @Reponsitory),将对象注入到 IOC 容器 bea ...
- [问题解决]基于注解配置dubbo遇到ConnectionLoss for /dubbo/xxx问题解决
今天升级spring版本的时候,同时升级dubbo的版本,采用的是dubbo的基于注解的配置方法,采用curator作为dubbo的客户端, curator版本为4.1.0,启动之后,发现一直报错 C ...
- 零配置简单搭建SpringMVC 项目
SpringMVC是比较常用的JavaWeb框架,非常轻便强悍,能简化Web开发,大大提高开发效率,在各种Web程序中广泛应用.本文采用Java Config的方式搭建SpringMVC项目,并对Sp ...
- Dubbo源码解析:基于注解配置原理解析
使用注解开发一个Dubbo应用 客户端 @Component("demoServiceComponent") public class DemoServiceComponent i ...
- JAVA 搭建基于SPRINGBOOT的SSM(SPRING + SPRINGMVC + MYBATIS)的MAVEN项目
http://www.cnblogs.com/yuanjava/p/8095139.html 转载于:https://www.cnblogs.com/zhouchunDIY/p/8108320.htm ...
- MyBatis基于注解的使用
Mybtis注解 增加接口CategoryMapper ,并在接口中声明的方法上,加上注解 增加对CategoryMapper 的映射: <mappers> //com.shop.mapp ...
- SpringMVC+Mybatis+MySQL配置Redis缓存
SpringMVC+Mybatis+MySQL配置Redis缓存 1.准备环境: SpringMVC:spring-framework-4.3.5.RELEASE-dist Mybatis:3.4.2 ...
最新文章
- linux ps -aux 中stat含义:
- 如何将MP3格式音乐转换成M4R格式
- python中面向切片编程(AOP)和装饰器
- 传统的线性降维方法效果不佳。_高压断路器机械故障诊断与定位的新思路:KPCA-SoftMax诊断方法...
- Boost:双图bimap的修改和替换测试程序
- 主成分分析(PCA)原理详解 2016/12/17 · IT技术 · 主成分分析, 数学 分享到: 21 原文出处: 中科春哥 一、PCA简介 1. 相关背景 主成分分析(Principa
- c语言中怎么 写子程序,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
- php : Warning: strftime(): It is not safe to rely on the system's timezone settings.
- 记一个函数定义中,形参是空列表时要注意的问题
- SageMaker 基于 Blazing Text的中文新闻标题分类
- 1、Struts2基本入门
- 四、OSPF配置实验
- 网络工程师中级--下午科目
- 常用电子个人邮箱账号格式怎么写?
- 当电脑打开显示每日新闻联播主要内容
- 静态函数与非静态函数的区别
- Python生成迷宫
- python基础训练—数字
- 用计算机弹出音乐谱,计算器弹歌曲谱子
- 【生产调度】基于遗传算法求解柔性生产调度(FJSP)问题含Matlab源码