标签:upd 3.0 mat sel autowired 允许 增删改查 property 响应
一.mybatis
mybatis为我们封装了对数据库的操作,只需要我们编写sql,便能实现对数据库的访问;
同时也为我们封装了返回的数据类型,只需要在配置文件中指定好,mybatis会自动帮我们遍历数据并封装。
mybatis封装数据时需要我们提供一个容器,也就是模型,其本质就是一个实体类。所以mybatis的使用是依赖模型的。
下面开始介绍mybatis使用方法:
1.创建模型(实体类)
public class TestEntity { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
2.定义接口(mapper类)
public interface TestMapper { List<TestEntity> queryAll(); }
3.实现接口(mapper.xml)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.qthh.flyl.app.test.mapper.TestMapper"> <resultMap type="com.qthh.flyl.app.test.model.TestEntity" id="testMap"> <id property="id" column="id" /> <result property="name" column="name"/> </resultMap> <select id="queryAll" resultMap="testMap"> select * from test </select> </mapper>
说下个人的理解: 这里的TestMapper.xml可以理解成 TestMapperImpl,就是TestMapper的实现类,只不过是以xml的方式进行的。
namespace(命名空间)表示要实现哪个接口,<select>标签中的id表示要实现的方法。
到这里,mybatis部分的编写已经完成。命名sql的编写规范可以参考mybatis的帮助文档,我们这里列举一些常用的标签:
<resultMap>:可以理解成orm(对象关系映射),模型中的属性和数据表中的字段映射。
<select><update><insert><delete>:增删改查
<if>:条件判断
#{}:获取参数值
二.spring mvc
1.定义服务接口并实现
public interface TestService { List<TestEntity> queryAll(); }
@Service("testService") public class TestServiceImpl implements TestService { @Autowired private TestMapper testMapper; @Override public List<TestEntity> queryAll() { return testMapper.queryAll(); } }
2.创建控制器
@Controller @RequestMapping("/test") public class TestController { @Autowired private TestService testService; @RequestMapping(value="/list",method=RequestMethod.GET) @ResponseBody public Object list(@RequestParam int userid){ return testService.queryAll(); } }
到这里,一个简单的spring mvc 应用就算完成了。
里面的注解,大家肯定都很熟悉,整理一下:
@Service:表明是一个服务类
@Controller:表明是一个控制类
@RequestMapping:注册映射路径
@Autowired:自动装配
@RequestParam:请求参数
@PathVariable:获取地址栏的参数
@ResponseBody:申明响应体
三.spring mvc 的核心组件
大家都知道,java web中最核心是servlet,它不仅仅是一个class,更是一个标准。所以围绕java web的就是servlet和servlet容器(现在主流的servlet容器有tomcat、jetty、weblogic、jboos),
而servlet容器就是我们常说的服务器。
也就是说,所有j2ee框架必须基于servlet去实现。spring mvc 也不列外。
1.DispatcherServlet
它是spring 实现mvc的核心。看名字就知道,是负责转发的servlet,转发客户端发来的请求。
<!-- spring MVC --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
2.RequestMappingHandlerMapping
spring mvc 通过DispatcherServlet,拦截所有请求,然后交给自己的bean容器去处理;通过解析请求报文,获取请求信息,然后通知对应的bean去处理。
那么,如何才能实现此机制呢?
对,就是通过RequestMappingHandlerMapping。它不仅仅帮我启用注解功能映射url并且负责请求的调度。
每当有请求来,它根据映射路径去找到对应的类、对应的方法去处理。
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
3.RequestMappingHandlerAdapter
在处理请求的过程中,会涉及到一些数据格式问题。假如我们现在要做一个接口,需要返回json格式的数据,但是请求报文里面默认传递的是字节流
为了满足我们的要求,spring mvc 又是如何处理的呢 ?
spring mvc 允许我们定义一个适配器,可以对消息(数据)进行类型转换,也就是messageConverters这个类
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJackson2HttpMessageConverter" /> </list> </property> </bean>
messageConverters中,我们可以自定义一个类型转换的bean
<bean id="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>text/json;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> <property name="objectMapper"> <bean class="com.fasterxml.jackson.databind.ObjectMapper"> <property name="dateFormat"> <bean class="java.text.SimpleDateFormat"> <constructor-arg type="java.lang.String" value="yyyy-MM-dd" /> </bean> </property> </bean> </property> </bean>
四.spring mvc 常用功能
后面会陆续更新...
1.ModelAndView
帮我们添加要返回的数据(模型),然后指定返回的页面(视图)
ModelAndView mav = new ModelAndView(); mav.setViewName("页面"); mav.addObject("数据", testService.queryAll()); return mav;
标签:upd 3.0 mat sel autowired 允许 增删改查 property 响应
原文地址:http://www.cnblogs.com/qthh/p/6532827.html