Mybatis细节问题】的更多相关文章

1.将字符串转换为日期格式? @DateTimeFormat(pattern="yyyy-MM-dd")…
mybatis细节 增删改查ParameterType都可以不用写 解释这个属性是可选的,因为 MyBatis 可以通过类型处理器(TypeHandler)推断出具体传入语句的参数 mybatis 中的sql语句不用写 : 增删改中 ResultType,paramType都不用写,只需要一个id 解释:增删改返回的是影响的多少行,mybatis会自动判断,如果是数字(int,long)自动返回该类型,如果是boolean,影响0行则返回false,否则是true. 查询中如果返回的是一个Jav…
前言: 技术的发展, 真的是日新月异. 作为javaer, 都不约而同地抛弃裸写jdbc代码, 而用各种持久化框架. 从hibernate, Spring的JDBCTemplate, 到ibatis, 以及ibatis的升级版mybatis. 从基本的xml配置, 也逐渐演化为注解方式配置. 技术的进步意味着, 你需要时刻保持一颗进步的心. 即便你经验丰富, 学识渊博. 但新技术的革命, 使得新人轻松超越. 希望作为一个技术人员, 始终有颗年轻的心. 本文将讲述一下, spring+mybati…
原文链接: Spring Boot 实战 -- MyBatis(注解版)使用方法 简介 MyBatis 官网 是这么介绍它自己的: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型.接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录. 示例代码 aw…
前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y Mybatis应该是国内用得最多的「数据访问层」框架了,我看了我司的好几个系统,基本都是用Mybatis的. 实话实说,我对Mybatis没有很深入的了解,也仅仅是处于「会用」的阶段上.日常的要加张表,加个字段就是写写DAO/Mapper. 为什么没有深入去研究Mybatis的原因很可能是面试其实问得不是特别多,起码我在校招的时候面了很多家公司,…
一.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…
1. xml中如果要使用到特殊的字符,比如> 或者< 等,使用 <![CDATA[<]> 进行包裹,避免解析XML的时候出错. 2. 后续还有内容,待总结.…
前几天上线了一个 版本,第二天到公司的时候,在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开发的时候,…
当一条SQL中既有条件查又有模糊查的时候,偶尔会遇到这样的and拼接问题.参考如下代码: <select id="listSelectAllBusiness"> select * from *** where <if test="a!= null"> a = #{a} </if> <if test="b!= null"> and b in <foreach collection="l…
properties 可以把数据库链接的配置放在上面的properties里面 #{占位符}的形式去引用上面的.下面的内容就是引用上面的内容的定义. 运行查询的方法测试一下 这样改造可以成功的运行程序. 数据库外部配置文件 可以支持把放到外部的配置文件里面. 给的资料里面有一个文件:jdbcConfig.properties 里面是配置数据库的信息 把此文件复制到我们项目的resources里面.jdbcConfig.properties 和配置文件内的前缀保持一致 运行测试方法 浏览器打开这个…
保存后得到id 默认查询出来的是0,因为没有插入就要得到最后的id值. insert语句跟在前面就可以获取到id了 新插入的这条数据就是51 order=after表示在insert语句后再去获取id.有些属性是可以生路的,这里为了演示,把属性都写在了这里. 也就是我们最新插入的这个值…
MyBatis是什么 MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的: MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of para…
1,mybatis流程跟踪,原理理解 基本思路: 从SqlSessionFactory的初始化出发,观察资源的准备和环境的准备,以及实现持久层的一些过程: 进入SqlSessionFactoryBean类,发现先执行的是 然后是: 在初始化类之后,做的准备工作如下: public void afterPropertiesSet() throws Exception {     notNull(dataSource, "Property 'dataSource' is required"…
mybatis比较轻量,适合开发比较小型的或者业务比较复杂的系统: 相对于hibernate来说可以灵活的写sql,更灵活的处理遇到的业务逻辑: 可以说hibernate是pojo实体对db的orm映射,而mybatis是pojo对sql的映射: 作为入门,先不考虑高级的特性,速度来一个CRUD再从源码和一个具体的业务来研究它的原理和高级特性: CRUD基本思路:作为一种比较流行的持久层ORM框架,相当于三层架构中的dao层: 最终作为程序员的我们使用的SqlSession对象,先来个思路,再来…
本文主要针对MySQL ---------------------------------------------------------------------------------------------------------- 用generatorConfig.xml工具生成我有总结过:http://www.cnblogs.com/fengchaoLove/p/5790352.html 了解的可以去看看. 本文主要针对纯手写. -----------------------------…
learn from:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps 关联查询 准备 关联结果查询(一对一) resultMap复用 集合(一对多) 3 关联查询 做查询之前,先修改几个配置.mapper.xml是在mybatis-config.xml中指定,那么我们每增加一个mapper都要增加一个配置,很麻烦.为了简化配置.需要将mapper接口和mapper.xml放到同一个文件下,并且接口和xml文件命名一致…
学习了Hibernate和Mybatis,但是一直不太清楚他们两者的区别的联系,今天在网上翻了翻,就做了一下总结,希望对大家有帮助! 原文:http://blog.csdn.net/firejuly/article/details/8190229 第一章     Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀的O/R mapping框架.目前属于apache的…
查询语句是使用 MyBatis 时最常用的元素之一 select元素配置细节如下 属性 描述 取值 默认 id 在这个模式下唯一的标识符,可被其它语句引用     parameterType 传给此语句的参数的完整类名或别名     resultType 语句返回值类型的整类名或别名.注意,如果是集合,那么这里填写的是集合的项的整类名或别名,而不是集合本身的类名.(resultType 与resultMap 不能并用)     resultMap 引用的外部resultMap 名.结果集映射是M…