SpringMVC(三)
今天是学习Spring的第四天,今天终于又把Spring+SpringMVC+Mybatis(SSM)高了一遍,这次运行的代码和配置和昨天的不一样,今天运行的很成功。
主要学习的一点就是我今天使用的是自己的本地的一个MySQL数据库,所以用起来还算比较方便一点,比如自己创建的数据,这样自己对数据库也比较熟悉,不会像用网上的那些代码使用起来那么生疏,不过最主要在于目录结构还是不够很清楚,先占个位,以后再来补充起来关于目录结构的东西。
现在项目的底层的框架已经完成,跑跑简单的增删改查可以了。不明白的是如何提供对外接口,要继续学写了。
过去了几天了,对在开发过程中一些总结吧,我是按照之前一个前辈给我的建议:从底层开始开发,所以我是按照这个经验start我的第一次开发的。
1、这里我就是已经创建了MySQL数据库(数据库需要经过设计,并且和架构师开发测试一起讨论的,其中我们需要考虑到表与表之间的链接关系,就是一张表的主键可能是下一张表的字段参数,因为我们在真正实现代码的最后需要调用到好几张表)的;
2、对于数据库里的表字段是我们在开发过程中需要用到的,但是有了数据库/表字段是完全不过够的,我们需要将数据库的字段定义提取出来,以方便我们在编写代码的时候使用到,这里我们定义数据库的字段是使用“DO”这个字段来确定文件名,定义在“model”层,这里需要说明下的是关于这里数据库字段的命名规则,就是需要使用驼峰命名方法(一般建议都是使用驼峰命名方法,前辈也是这么跟我说的),这里定义的时候还需要注意的是数据库/表里有几个字段我们就需要定义几个字段(个数必须保持一致,但是名字建议驼峰命名,不建议加下划线);
3、数据库字段定义完成后我们就需要往上层挺近了一层,这一层是“dal”层,这里是定义关于数据库操作的方法,比如增(insert)删(delete)改(update)查(select),这里我们需要定义两个文件:(1)Mapper.java(当然也有人会定义成Dao,我定义的是Mapper,效果是一样的),(2)Mapper.xml,Mapper.java只要是定义一个增(insert)删(delete)改(update)查(select)方法(就是定一个接口,不需要实现),Mapper.xml是完成定义增(insert)删(delete)改(update)查(select)的方法;
4、这里我要单独说些关于Mapper.xml里的东西,因为有好多配置的问题会出现问题。刚开始的时候总是挖坑给自己跳,现在算是了解一点了,在这里需要着重说明一下,也是给自己一个提醒,我还是会用截图加上注解的方式来说明:

从这张图中可以看到我标注了五个地方,前三个是为了后面两个做准备的:
(1)
很明显是Mapper(Dao)的路径,用来映射我们定义的接口,不能错,在mybatis中,映射文件中的namespace是用于绑定Dao接口的,即面向接口编程。当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句。
(2)
这个id是唯一标示,MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。在MyBatis进行查询映射的时候,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。当提供的返回类型属性是resultType的时候,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,因为Map不能很好表示领域模型,我们就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。
(3)
Mybatis的Mapper文件中的select、insert、update、delete元素中有一个parameterType属性,用于对应的mapper接口方法接受的参数类型。 可以接受的参数类型有基本类型和复杂类型。mapper接口方法一般接受一个参数,可以通过使用@Param注释将多个参数绑定到一个map做为输入参数。
(4)
比如这里的id定义
(5)关于第四点我需要多说几句:
a、Mapper映射Mapper.xml
b、Mapper中有定义@Param时,我们就以@Param后括号里的参数为准,不以@Param(“~”)后面定义的参数为准
c、如果Mapper内有定义@Param时,在Mapper.xml里就不需要定义ParameterType了
d、如果Mapper里面没有定义@Param时,以定义方法内的参数为准,而且Mapper.xml里也要有ParameterType参数
SpringMVC(三)的更多相关文章
- SpringMVC 三种异常处理方式
SpringMVC 三种异常处理方式 在 SpringMVC, SpringBoot 处理 web 请求时, 若遇到错误或者异常,返回给用户一个良好的错误信息比 Whitelabel Error Pa ...
- springmvc(三) 参数绑定、
前面两章就介绍了什么是springmvc,springmvc的框架原理,并且会简单的使用springmvc以及ssm的整合,从这一章节来看,就开始讲解springmvc的各种功能实现,慢慢消化 --W ...
- SpringMVC(三):参数绑定、输入输出转换
一.参数解析绑定 1. 自定义绑定:不绑定某些项 @InitBinder private void initBinder(WebDataBinder dataBinder) { dataBinder. ...
- SpringMVC(三) RequestMapping修饰类
SpringMVC使用@RequestMapping 注解为控制器指定可以处理哪些URL请求. 可以用于类定义以及方法定义: 类定义:提供初步的请求映射信息.相对于WEB应用的根目录. 方法处:提供进 ...
- springMvc(三)session、HandlerInterceptorAdapter
仅供参考 设置session值,根据自己的需求设置值 /** * 登入验证 * * @return */ @RequestMapping(value = "/loginCheck.htm&q ...
- SpringMVC(三) —— 参数绑定和数据回显
参数绑定的过程:就是页面向后台传递参数,后台接受的一个过程. 默认支持的参数类型:(就是你在方法上以形参的形式去定义一下的类型,就可以直接使用它) HttpServletRequest HttpSer ...
- SpringMVC(三):@RequestMapping中的URL中设定通配符,可以使用@PathVariable映射URL绑定的占位符
1)带占位符的URL是Spring3.0新增的功能,该功能在SpringMVC向REST目标挺进发展过程中具有里程碑的意义. 2)通过@PathVariable可以将URL中占位符参数绑定到控制器处理 ...
- SpringMVC(三十) 实例:SpringMVC_RESTRUL_CRUD_显示所有员工信息
Step by step to create a springMVC demo. 1. 创建一个dynamic web 工程. 2. 添加需要的jar文件,如下图: 3. 配置web.xml:配置di ...
- springMVC三种处理器映射器
1.配置处理器映射器,springmvc默认的处理器映射器BeanNameUrlHandlerMapping <bean class="org.springframework.web. ...
- SpringMVC(三) RESTful架构和文件上传下载
RESTful架构 REST全名为:Representational State Transfer.资源表现层状态转化.是目前最流行的一种互联网软件架构. 它结构清晰.符合标准.易于理解.扩展方便,所 ...
随机推荐
- HeadFirst设计模式之模板方法模式
一. 1.The Template Method defines the steps of an algorithm and allows subclasses to provide the impl ...
- vmware tools安装程序无法继续,Microsoft Runtime DLL安装程序未能完成安装。的解决方法
vmware tools安装程序无法继续,Microsoft Runtime DLL安装程序未能完成安装.的解决方法_华英雄_新浪博客 http://blog.sina.com.cn/s/blog_5 ...
- 【HDOJ】2890 Longest Repeated subsequence
后缀数组的应用.和男人八题那个后缀数组差不多. /* 2890 */ #include <iostream> #include <sstream> #include <s ...
- Android开发之隐式Intent中Intent-filter的三个属性-action,category,data
使用隐式Intent时,需要使用到意图过滤器Intent-filter.Intent-filter含有三个属性:action,category,data.通过这三个属性的组合,可以启动想要启动的act ...
- poj2391,poj2455
这两题本质是一致的: 一般来说,对于最长(短)化最短(长)的问题我们一般都使用二分答案+判定是否可行 因为这样的问题,我们一旦知道答案,就能知道全局信息 拿poj2455举例,对于二分出的一个答案,我 ...
- HAOI2007 理想的正方形
1047: [HAOI2007]理想的正方形 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1402 Solved: 738[Submit][Sta ...
- c#字符串及数组操作
字符串操作(取当前时间)string time=convert.tostring(DateTime.Today).split( new char []{' '}); textbox1.text= ...
- linux SPI bus demo hacking
/********************************************************************** * linux SPI bus demo hacking ...
- linux测试题
http://www.2cto.com/os/201307/225399.html 2013最新linux运维面试题 在对linux基本知识的归纳总结之后,这里是一份linux的测试题.希望能帮助大 ...
- ps一般常用的快捷键
jpg 不支持透明和半透明 :网页中的大图,高清图(体积大) gif 支持透明 不支持半透明 :网页中的小图标(动画图片)png8 支持透明 不支持半透明 :网页中的小图标png24 支持透明 支持半 ...