Mybatis
来源:互联网 发布:求生之路2mac视角不动 编辑:程序博客网 时间:2024/06/07 03:19
Mybatis学习总结
注解提示:
@RestController,@Controller
@RequestParam, @RequestBody, @PathVariable
最近需要使用Mybatis提供Restful形式的接口,这里做一点自己的总结,随时修改。
1. URL参数注解
@RequestParam, @RequestBody, @PathVariable
三种注解可以提供url参数
@RequestParam, @RequestBody 都POST请求时用的参数,
@PathVariable是从URL中获取参数
代码:
- 这是@PathVariable作为参数的例子
//访问url为:http://xxx/task/preview/USER_TABLE --这里USER_TABLE为传入的参数,//{tableName:.+} 目的是为了满足传入参数可能带有点(.),保证可以正确解析@RequestMapping(value="/task/preview/{tableName:.+}",method=RequestMethod.GET)public JsonResponse<Map<String, Object>>previewTaskResult(@PathVariable String tableName){ if(Strings.isNullOrEmpty(tableName)){ return new JsonResponse<Map<String, Object>>(false, "wrong"); } ...}
- 这是@RequestBody作为参数的例子
//我理解的当传入参数为Map或非基本类型时,使用@RequestBody参数@RequestMapping(value="/form/index",method=RequestMethod.POST)public JsonResponse<String> index(@RequestBody Map<String, Object> paramMap){ if(!paramMap.containsKey("key")){ return new JsonResponse<String>(false,null,"empty"); } ...}
- //这里在添加一个@RequestParam的例子
//我理解,当传入参数为基本数据类型的时候,使用@RequestParam
2. Controller注解
@RestController 与 @Controller的区别
我理解的是:
@RestController 相当于 @Controller + @ResponseBody 结合在一起
//这里为code
注意:
- @Controller
- 如果controller的@RequestMapping方法中有需要范围jsp或html页面,需要使用
@Controller
来注解Controller,这样可以配合视图解析器InternalResourceViewResolve解析页面; - 如果方法中还有需要返回Json、Xml或自定义type内容,需要在对应的方法上添加
@ResponseBody
注解即可;
- 如果controller的@RequestMapping方法中有需要范围jsp或html页面,需要使用
- @RestController
- 返回的就是return的内容,不能返回映射的html内容;
3. Mapper文件
在编写Mapping文件
时,需要注意
默认情况下,Mapper文件名于Map接口名一样,一般以
*Mapper.xml
结尾Mapper文件中,
<mapper namespace="xxx"> //要检查xxx是否与xml文件坐在package包名一样
Mapper文件中的SQL语句中,
id
要与Mapper接口文件中的方法名一样parameterType
是参数的类型,一个参数时可以如果要指定,需要与方法中参数的数据类型一直,可以省略不写SQL语法中传入的参数要与方法中参数名一样,如:
// applyId是方法参数中的参数名称,这里要一致<select id="getTaskID" parameterType="String">select business_id from apply where id=#{applyId}</select>
一般如果需要对传入的参数做判断,String !=null and String !=”, Number !=null 即可
//这是一个update操作<!--update apply set apply_status=? where id=?--><update id="updateApplyStatus">update apply<set> <if test="applyStatus!=null"> //判断传入的数字参数applyStatus是否为null apply_status=#{applyStatus,jdbcType=DECIMAL} </if></set><where> <if test="applyId !=null and applyId!=''"> //String类型的,判断!=null,!="" id=#{applyId,jdbcType=VARCHAR} </if></where></update>
4. Mybatis运行报错
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.yo....
运行时遇到上面的错误,找到了下面的内容,一般也就按照下面的提示内容检查
首先,给定的异常提示信息并不精准,有多个错误原因都会抛出该异常。mybatis出现这个问题,通常是由Mapper interface和对应的xml文件的定义对应不上引起的,这时就需要仔细检查对比包名、xml中的namespace、接口中的方法名称等是否对应。我之前就因为称忘记在xml标签的id属性中添加方法名或写错方法名而出现这个错误。出现这个错误时,按以下步骤检查一般就会解决问题:1:检查xml文件所在package名称是否和Mapper interface所在的包名一一对应;2:检查xml的namespace是否和xml文件的package名称一一对应;3:检查方法名称是否对应;4:去除xml文件中的中文注释;5:随意在xml文件中加一个空格或者空行然后保存。
参考内容
学习的过程中参考了下面的博客内容,
附上地址链接:
http://blog.csdn.net/yzllz001/article/details/54312929
http://www.cnblogs.com/softidea/p/5884772.html
http://www.jianshu.com/p/800fe918cc7a
- MyBatis
- MyBatis
- Mybatis
- myBatis
- mybatis
- MyBatis
- mybatis
- Mybatis
- MyBatis
- Mybatis
- mybatis
- MyBatis
- MyBatis
- mybatis
- MyBatis
- mybatis
- mybatis
- mybatis
- Java笔记第十五课(TreeSet集合)
- 广义表的表头和表尾是什么?
- C/C++中的预编译指令各种用法
- JAVA基础知识总结
- Jmeter正则表达式
- Mybatis
- 2017.11.13工作日记
- python socket 小例子
- 摩尔定律会失效吗?
- 【量化小讲堂-Python&Pandas系列10】如何判断一个策略的好坏?(附代码)
- Django Web 开发指南--第二章笔记
- Standard Deviation UVA
- 关于指针
- 【转载】MQTT的部署和聊天室搭建