mybatis使用细节注意】的更多相关文章

mybatis细节 增删改查ParameterType都可以不用写 解释这个属性是可选的,因为 MyBatis 可以通过类型处理器(TypeHandler)推断出具体传入语句的参数 mybatis 中的sql语句不用写 : 增删改中 ResultType,paramType都不用写,只需要一个id 解释:增删改返回的是影响的多少行,mybatis会自动判断,如果是数字(int,long)自动返回该类型,如果是boolean,影响0行则返回false,否则是true. 查询中如果返回的是一个Jav…
1. xml中如果要使用到特殊的字符,比如> 或者< 等,使用 <![CDATA[<]> 进行包裹,避免解析XML的时候出错. 2. 后续还有内容,待总结.…
1.什么是mybatis? (1)mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动.创建连接.创建statement等繁杂的过程. (2)mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回. (3)MyBatis 支持定制化…
1.当实体类中的属性名和表中的字段名不一样 解决办法①: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致 <select id=”selectorder” parametertype=”int” resultetype=”me.gacl.domain.order”> select order_id id, order_no orderno ,order_price price form orders where order_id=#{id}; </selec…
MyBatis 2.什么是MyBatis的接口绑定,有什么好处 接口映射就是在IBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,    我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置. 3.接口绑定有几种实现方式,分别是怎么实现的? 接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上    @Select@Update等注解里面包含Sql语句来绑定,另外一种就是通过xml里面写SQL来绑定,    在这种情…
1.#{}和${}的区别是什么? #{}是预编译处理,${}是字符串替换. #{}是sql的参数占位符,${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换. Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值: Mybatis在处理${}时,就是把${}替换成变量的值. 使用#{}可以有效的防止SQL注入,提高系统安全性. 2.通常一个Xml映射文件,都会写一个Dao接口与之对应,…
MyBatis面试题整理 1.什么是MyBatis? 答:MyBatis是一个可以自定义SQL.存储过程和高级映射的持久层框架. 2.讲下MyBatis的缓存 答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置<cache/> 3.Mybatis是如何进行分页的?分页插件的原理是什么? 答: 1)Myba…
文章首发于今日头条:https://www.toutiao.com/i6712324863006081549/ 前言 跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽.切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的轨迹),还是钱给少了,不受重视. 闲话不多说开始主题(面试题+答案领取方式见侧边栏) 常见spring面试题: 1 .什么是 Spring 框架?Spring 框架有哪些主要模块?…
老规矩,本篇文章 不做 MyBatis 的 编码讲解 ,只介绍 文章学习的一些优秀文章 重点在于不要循规蹈矩,教程 这样走,你不一定要按他这样走,按自己的方式来,学习效率会更高,网上的教程有很多,今天我们找了一些自认为不错的 MyBatis 教程,先来看第一个 文章地址 : https://blog.csdn.net/ititii/category_7596813.html 细节之处,我不在过多剖析 ,文章把MyBatis框架 的内容讲的很全面,尤其是对于Java开发工程师的开发来说 学习这些…
1.什么是MyBatis? 答:MyBatis是一个可以自定义SQL.存储过程和高级映射的持久层框架. 2.讲下MyBatis的缓存 答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置<cache/> 3.Mybatis是如何进行分页的?分页插件的原理是什么? 答: 1)Mybatis使用RowBound…
持久层整合总述 1.Spring 框架为什么要与持久层技术进行整合? JavaEE开发需要持久层进行数据库的访问操作 JDBC.Hibernate.MyBatis 进行持久开发过程存在大量的代码冗余 Spring 基于模板设计模式对于上述的持久层技术进行了封装 2.Spring 可以与哪些持久层技术进行整合? JDBC -- JDBCTemplate Hibernate(JPA)-- HibernateTemplate MyBatis -- SqlSessionFactoryBean.Mappe…
1.什么是 MyBatis? 答:MyBatis 是一个可以自定义 SQL.存储过程和高级映射的持久层框架. 2.讲下 MyBatis 的缓存 答:MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射文件中配置<cache/> 3.Mybatis 是如何进行分页的?分页插件的原理是什么? 答: 1)Mybati…
Memcached 标签 : Java与NoSQL With Java 比较知名的Java Memcached客户端有三款:Java-Memcached-Client.XMemcached以及Spymemcached, 其中以XMemcached性能最好, 且维护较稳定/版本较新: <dependency> <groupId>com.googlecode.xmemcached</groupId> <artifactId>xmemcached</arti…
JavaSSM框架精选50道面试题 2019年02月13日 19:04:43 EerhtSedah 阅读数 7760更多 分类专栏: 面试题   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_41735004/article/details/87199651 1.什么是MVC框架?传统MVC框架存在的问题是什么? MVC框架是为了解决传统MVC模式(Jsp + Servlet +…
前前言 2019即将过去,伴随我们即将迎来的又是新的一年,过完春节,马上又要迎来新的金三银四面试季. 那么,作为程序猿的你,是否真的有所准备的呢,亦或是安于本职工作,继续做好手头上的事情. 当然,不论选择如何,假如你真的准备在之后的金三银四跳槽的话,那么作为一个Java工程师,就不可不看了. 如何在几个月的时间里,快速的为即将到来的面试进行充分的准备呢? 一.什么是MyBatis? 答:MyBatis是一个可以自定义SQL.存储过程和高级映射的持久层框架. 二.讲下MyBatis的缓存 答:My…
百知教育 - Spring系列课程 - 持久层整合 第一章.持久层整合 1.Spring框架为什么要与持久层技术进行整合 1. JavaEE开发需要持久层进行数据库的访问操作. 2. JDBC Hibernate MyBatis进行持久开发过程存在大量的代码冗余 3. Spring基于模板设计模式对于上述的持久层技术进行了封装 2. Spring可以与那些持久层技术进行整合? 1. JDBC |- JDBCTemplate 2. Hibernate (JPA) |- HibernateTempl…
一.mybatis 基本配置 最近几天一直在学习mybatis,看了一些源码,本文讲述mybatis的一些基本配置和基本的用法和注意到一些细节.个人时间和精力有限,本文属于流水账类型,不成体系,算是自己的个人笔记吧. 1.本案例所使用的数据库为mysql,数据库的脚本代码如下: CREATE TABLE `message` ( `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `COMMAND` varchar(16) DEFAULT NULL…
简介 这是 Mybatis 系列博客的第四篇,我本来打算详细讲解 mybatis 的配置.映射器.动态 sql 等,但Mybatis官方中文文档对这部分内容的介绍已经足够详细了,有需要的可以直接参考.所以,我将扩展一些其他特性或使用细节,掌握它们可以更优雅.高效地使用 mybatis. 这里补充一点,本文的所有测试例子都是基于本系列 Mybatis 第一篇文章的项目,其他相关博客如下: Mybatis源码详解系列(一)--持久层框架解决了什么及如何使用Mybatis Mybatis源码详解系列(…
mybatis Result Maps collection already contains value 这是个小功能,我当时没有怎么在意,后来发到了测试环境的时候测试提出了bug,我才慌忙查看原因, <select id="getRoleInfo" parameterType="java.lang.String" resultMap=" com.hupu.smart.game.platform.dto.common.RoleInfo"…
自我总结,欢迎拍砖! 目的:在需要返回int,long等基础类型数据的情况下,尽量在mybatis的Mapper中用基础类型的包装类. 原因:当查询的字段为空值时,mybatis会返回null,用基础类型接收则会出现异常,但是用包装类就把这个问题规避了. 一.读数据环境准备: 创建student表(无主键): create table student(id int,name varchar(20),idCard bigint,classNo varchar(10)); insert into s…
具体怎么整合的网上有很多优秀的博客介绍,这里就直接引用一篇个人觉得非常详细的教程: https://blog.csdn.net/winter_chen001/article/details/77249029 里面还包含了常用的额外插件,强烈推荐: PageHelper 分页插件 mybatis generator 自动生成代码插件 正文: 1. 开启事务管理(注解方式): 因为配置的druid数据库连接池,所以方法如下: 使用: 直接在对数据库进行操作的类上面添加 @Transaction 2…
mapper接口动态代理 动态代理dao开发规则 1.namespace必需是接口的全路径名 2.接口的方法名 必需与 映射文件的sql id一致 3.接口的输入参数必需与映射文件的parameterType类型一致 4.接口的返回类型必须与映射文件的resultType类型一致 动态代理dao开发步骤 1.创建xxxMapper.xml映射文件 编写SQL 2.创建UserMapper接口 3.加载UserMapper.xml 4.测试动态代理Dao dao层代码 List<User> fi…
页面有个功能 为 根据 品牌名进行 关键字查询,对应到数据库的是brand表的name字段的模糊查询 如果用的是SSM框架,在mybatis中我们需要自己写sql语句,涉及到like的模糊查询,mybatis中我们通常会使用#{}或${}来获取pojo对象的变量值. 这两个区别为   #{} 会在 变量外侧 加上 单引号  如   select * from brand where name='牌1' ${} 并不会 加单引号   如 select * from brand where name…
1.mybatis对sql执行后会对结果进行封装,如果没有返回任何记录,只是封装后的对象没有值,而对象并不为空null: (这个问题疏忽坑了两次,在对返回数组结果进行判断的时候,我用的if(Array!=null) 结果是判断正确,应该if(Array.length!=0)做判断记录是否为空) 2.mapper的xml文件中,if<test="ids.length!=0  and ids!=null "> 这里的与运算是用的and 3.数组数据的绑定问题 在这里传进来的的参…
mybatis第二篇 1.${}和#{}的区别 1.#在传参的时候,会自动拼接单引号:$不能拼接单引号; 2.$传参时,一般不支持jdbcType指定类型的写法;#则可以;如: ​ #{name,jdbcType=VARCHAR} 3.$一般用于在sql中拼接表名,结果排序,模糊查询等操作;其他正常参数传递一般使用 4.因为${}使用后不会自动拼接单引号,所以可能还会导致sql攻击 select * from user where username=${username} and passwor…
Mybatis要解决的问题: 1. 将sql语句硬编码到java代码中,如果修改sql语句,需要修改java代码,重新编译.系统可维护性不高. 设想如何解决? 能否将sql单独配置在配置文件中. 2. 数据库连接频繁开启和释放,对数据库的资源是一种浪费. 设想如何解决? 使用数据库连接池管理数据库连接. 3. 向preparedStatement中占位符的位置设置参数时,存在硬编码(占位符的位置,设置的变量值) 设想如何解决? 能否也通过配置的方式,配置设置的参数,自动进行设置参数 4. 解析结…
1.根据个人习惯,将储存那些数据库查询结果集有映射关系的实体类的Package包名有如下格式: cn.bjut.domain cn.bjut.pojo cn.bjut.model cn.bjut.entity 2.根据个人习惯,将mybatis持久层框架操作数据库必需的接口的Package包名有如下格式: cn.bjut.mapper cn.bjut.dao 前者偏向xml映射配置文件方式,后者偏向注解的方式使用. ====================== end…
前几天上线了一个 版本,第二天到公司的时候,在cat上发现了一个长sql查询非常耗时,几乎把线上的项目搞崩溃了.我马上开始排查问题.最终发现 球队的ID传过来的时候是String 类型的,但是在执行sql 的时候就变成了 Integer 类型了,  如果是integer 类型,数据库就无法使用 索引,所以查询的速度大大降低了.组长说加个 jdbcType= varchar . 果然,加上之后查询速度快了很多.立马发布到线上 ,解决了线上的问题.…
一.加载pom依赖包 <!--spring-boot开发热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> 二.使用描述 (1)当你使用IDE开发的时候,…
1.将字符串转换为日期格式? @DateTimeFormat(pattern="yyyy-MM-dd")…