今天是学习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(三)的更多相关文章

  1. SpringMVC 三种异常处理方式

    SpringMVC 三种异常处理方式 在 SpringMVC, SpringBoot 处理 web 请求时, 若遇到错误或者异常,返回给用户一个良好的错误信息比 Whitelabel Error Pa ...

  2. springmvc(三) 参数绑定、

    前面两章就介绍了什么是springmvc,springmvc的框架原理,并且会简单的使用springmvc以及ssm的整合,从这一章节来看,就开始讲解springmvc的各种功能实现,慢慢消化 --W ...

  3. SpringMVC(三):参数绑定、输入输出转换

    一.参数解析绑定 1. 自定义绑定:不绑定某些项 @InitBinder private void initBinder(WebDataBinder dataBinder) { dataBinder. ...

  4. SpringMVC(三) RequestMapping修饰类

    SpringMVC使用@RequestMapping 注解为控制器指定可以处理哪些URL请求. 可以用于类定义以及方法定义: 类定义:提供初步的请求映射信息.相对于WEB应用的根目录. 方法处:提供进 ...

  5. springMvc(三)session、HandlerInterceptorAdapter

    仅供参考 设置session值,根据自己的需求设置值 /** * 登入验证 * * @return */ @RequestMapping(value = "/loginCheck.htm&q ...

  6. SpringMVC(三) —— 参数绑定和数据回显

    参数绑定的过程:就是页面向后台传递参数,后台接受的一个过程. 默认支持的参数类型:(就是你在方法上以形参的形式去定义一下的类型,就可以直接使用它) HttpServletRequest HttpSer ...

  7. SpringMVC(三):@RequestMapping中的URL中设定通配符,可以使用@PathVariable映射URL绑定的占位符

    1)带占位符的URL是Spring3.0新增的功能,该功能在SpringMVC向REST目标挺进发展过程中具有里程碑的意义. 2)通过@PathVariable可以将URL中占位符参数绑定到控制器处理 ...

  8. SpringMVC(三十) 实例:SpringMVC_RESTRUL_CRUD_显示所有员工信息

    Step by step to create a springMVC demo. 1. 创建一个dynamic web 工程. 2. 添加需要的jar文件,如下图: 3. 配置web.xml:配置di ...

  9. springMVC三种处理器映射器

    1.配置处理器映射器,springmvc默认的处理器映射器BeanNameUrlHandlerMapping <bean class="org.springframework.web. ...

  10. SpringMVC(三) RESTful架构和文件上传下载

    RESTful架构 REST全名为:Representational State Transfer.资源表现层状态转化.是目前最流行的一种互联网软件架构. 它结构清晰.符合标准.易于理解.扩展方便,所 ...

随机推荐

  1. HeadFirst设计模式之单例模式

    一. 1.The Singleton Pattern ensures a class has only one instance, and provides a global point of acc ...

  2. P127、面试题20:顺时针打印矩阵

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.例如:如果输入如下矩阵:1  2  3  4 5  6  7  89  10  11  1213  14  15  16则依次打印出 ...

  3. JMS基础(1)

    1.  消息中间件: 将信息以消息的形式,从一个应用程序传送到另一个或多个应用程序. 主要特点: (1) 消息异步接收: 消息发送者不需要等待消息接收者的响应 (2) 消息可靠接收: 确保消息在中间件 ...

  4. jquery uploadify上传文件插件导致浏览器崩溃问题解决方法

    自谷歌浏览器更新到(版本39.0.2171.99 )后,访问上传文件界面浏览器就崩溃了,而其他的浏览器不会出现问题. 出现这种问题的原因就是谷歌浏览器缓存问题,但将访问该jsp页面路径添加上时间戳后无 ...

  5. 【HDOJ】4373 Mysterious For

    1. 题目描述有两种不同类型的循环,并给出一个由1.2组成的序列,表示嵌套的循环类型.问这样组着的循环一共需要多少次循环?并将结果模364875103. 2.基本思路显然,每当遇到一个类型1的序列,即 ...

  6. 【HDOJ】4345 Permutation

    即求P1^n1+P2^n2 + ... + Pk^nk <= n,其中Pk为素数的所有可能组合.思路是DP.1~1000的素数就不到200个.dp[i][j]表示上式和不超过且当前最小素数为P[ ...

  7. Linux下修改PATH的方法

    Linux下修改PATH的方法 1.直接在命令行里敲 PATH=$PATH:/path1:/path2:/pathN用户登出之后PATH恢复原样. 只是临时起作用. 2.修改~目录下bash_prof ...

  8. Android开发之ContentProvider的简单使用

    ContentProvider,内容提供者 官网结构图: 作为四大组件之一的ContentProvider,主要是用于应用间数据共享使用的. ContentProvider把应用的数据封装起来,然后提 ...

  9. jquery 图片手风琴效果

    这篇主要是手风琴效果和无缝切换相结合,在Demo里的Demo3.html.Demo4.html. 手风琴原理比较简单,当鼠标经过的时候改变图片的路径,鼠标移到另一张图片时还原路径. 虽然原理简单,但是 ...

  10. sencha touch tabsidebar 源码扩展

    先上图看效果 没错,这是一个sencha touch 项目,而这里的右边推出效果(下文叫做tabsiderbar),使用插件tabsiderbar来扩展的. 插件js下载地址:http://www.m ...