简介 Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心. 映射文件中有很多属性,常用的就是parameterType(输入类型).resultType(输出类型).resultMap().rparameterMap(). parameterType(输入类型) 1.#{}与${} #{}实现的是向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符即?. <!-- 根据id查询用户信…
​ 我们都知道,在Mybatis中的Mapper.xml映射文件可以定制动态SQL,在dao层定义的接口中定义的参数传到xml文件中之后,在查询之前mybatis会对其进行动态解析,通常使用#{}接收,下面介绍几种比较常用的用法. 接收多个参数 ​ 遇到这个问题是在昨天实现分页的时候接收参数时遇到了错误,最后用第一种方法解决,但是怀着路漫漫其修远兮的态度,吾必将上下而求索其他用法,所以在查询了网上很多教程和mybatis官方文档,总结出以下四种常用用法: 具体分页参考: 手动实现分页 或 手动分…
查询订单关联查询用户: 使用resultType,ordersCustom可以通过继承orders获得其属性,再添加我们需要的用户字段. 使用resultMap,orders表中通过封装user对象来关联用户. Mapper.xml映射文件 它定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心文件. 2.1 parameterType(输入类型) 2.1 .1#{}与${}    #{}:表示占位符?,它可以防止sql注入,它会把SQL语句和参数发到数据…
MyBatis 真正的强大在于映射语句,专注于SQL,功能强大,SQL映射的配置却是相当简单 所以我们来看看映射文件的具体结构 一.xml节点结构 mapper为根节点 - namespace命名空间 cache - 配置给定命名空间的缓存 cache-ref – 从其他命名空间引用缓存配置 resultMap –用来描述数据库结果集和对象的对应关系 sql – 可以重用的SQL块,也可以被其他语句引用 insert – 映射插入语句 update – 映射更新语句 delete – 映射删除语…
传送门:mybatis官方文档 Mapper XML 文件详解 一. 数据查询语句 1. select <select id="selectPerson" parameterType="int" 这个属性是可选的,因为 MyBatis 可以通过 TypeHandler 推断出具体传入语句的参数,默认值为 unset. parameterMap="deprecated" resultType="hashmap" resul…
MyBatis的强大,主要原于它强大映射功能,相对其它的jdbc,使用MyBatis,你会发现省掉很多代码.上一篇已经简单做出一个实例.今天就了解一下MyBatis的映射xml文件. 了解上一篇friendMapper.xml文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"…
SQL Map XML 映射文件除了上文提到的属性还有一些其他重要的属性,下文将详细介绍这些属性. 缓存 Mapped Statement 结果集 通过在查询 statement 中指定 cacheModel 属性,可以缓存 Mapped Statement 中得到的查 询结果.Cache  model  是在 SQL  Map  XML  文件中定义的可配置缓存模式,可以使用 cacheModel 元素来配置. <cacheModel id="product-cache" ty…
在前面的例子中,只使用了 SQL Map 最简单的形式.SQL Map 的结构中还有其他更多 的选项.这里是一个 mapped statement 较复杂的例子,使用了更多的特性. <sqlMap id=”Product”> <cacheModel id=”productCache” type=”LRU”> <flushInterval hours=”24”/> <property name=”size” value=”1000” /> </cache…
SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序): cache – 给定命名空间的缓存配置. cache-ref – 其他命名空间缓存配置的引用. resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象. parameterMap – 已废弃!老式风格的参数映射.内联参数是首选,这个元素可能在将来被移除,这里不会记录. sql – 可被其他语句引用的可重用语句块. insert – 映射插入语句 update – 映射更新语句 delete –…
一.parameterType(输入类型) 1.1 传递简单类型 <!-- 根据用户id查询用户 --> <select id="queryUserById" parameterType="int" resultType="cn.itcast.mybatis.pojo.User"> SELECT * FROM `user` WHERE id = #{id} </select> <!-- 根据用户名模糊查询…
一.先创建数据脚本,这里用的mysql数据脚本 drop table VOTE_ITEM; drop table VOTE_OPTION; drop table VOTE_SUBJECT; drop table VOTE_USER;     create table VOTE_USER (   VU_USER_ID   int(8) primary key,     VU_USER_NAME VARCHAR(20) not null,     VU_PASSWORD  VARCHAR(20) n…
问题描述: 在写mapper.xml文件时,想给操作数据库语句添加一些中文注释,添加后运行报如下错误: 思考 可能是写了中文注释,编译器在解析xml文件时,未能成功转码,从而导致乱码.但是文件开头也采用了utf-8的编码方式,就很迷~~ 解决 网上看到一个方法,将文件开头的改为就OK,然后测试了一下哎 还真可以,就很神奇 像别的xml文件,像pom.xml,spring,mybatiis等的配置文件,平常都会加一些中文注释,采用的编码方式也是utf-8就不会有事儿,有大佬可以解释一下什么原因吗…
我们为什么要修改呢,这是因为我们查询的时候,我们有时候需要连表查询,例如我们需要查询出员工表的信息(emp_id,emp_name...)与此同时,我们还想查询出该员工所在的部门(dept_name).此时,生成mapper文件查询的只是表中已有的字段. 所以我们可以在EmployeeMapper.xml中添加两个方法, 同时我们还要为Employee.java添加一个Department属性,别忘记增加setter和getter. 最后我们需要修改EmployeeMapper.xml文件,增加…
经过上两篇博文的总结,对mybatis中的dao开发方法和流程基本掌握了,这一节主要来总结一下mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置文件中都有哪些可以配置的东西: 配置内容 作用 <properties> 用来加载属性文件 <settings> 用来设置全局参数 <typeAliases> 用来设置类型的别名 <typeHandlers> 用来设置类型处理器 <objectFactor…
  5       SqlMapConfig.xml mybatis的全局配置文件SqlMapConfig.xml,配置内容如下: properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境集合属性对象) environment(环境子属性对象) transactionManager(事务管理) dataSource(数据…
上一篇博文总结了mybatis使用 原始dao的方法存在的一些弊端,我们肯定不会去用它,那么mybatis中该如何开发dao呢?如题所述,这篇博文主要来总结一下使用mapper代理的方法来开发dao的步骤.  使用mapper代理的方法来开发dao时,程序员只需要干两件事即可: 需要编写mapper.xml映射文件 需要编写mapper接口(相当于dao接口) 从做的工作来看,使用mybatis中使用mapper代理来开发dao会很方便,完全不需要我们去写具体的实现类,只需要写出接口即可,但是接…
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub 地址.Spring-Boot-Starter 源码分析 GitHub 地址)进行阅读 MyBatis 版本:3.5.2 MyBatis-Spring 版本:2.0.3 MyBatis-Spring-Boot-Starter 版本:2.1.4 MyBatis的初始化 在MyBatis初始化过程中,大…
一. liquibase 使用说明 功能概述:通过xml文件规范化维护数据库表结构及初始化数据. 1.配置不同环境下的数据库信息 (1)创建不同环境的数据库. (2)在resource/liquibase/config/ 文件夹下配置文件dev.properties, local.properties, 分别代表开发环境和本机环境的数据库信息. 2.确定liquibase作用于哪一个环境的数据库. 配置pom.xml文件中的property: db.profile 的值,比如 <db.profi…
MyBatis Generator(MBG)的使用 MBG可以根据数据表生成对应的model.xml映射文件.mapper接口,只是简单的生成,还需要根据需求修改. 1.下载jar包 https://github.com/mybatis/generator/releases 解压后有3个jar包,只使用一个: 2.新建一个新的java项目,导入mybatis.jar.mybatis-generator-core.jar.数据库驱动. 3.src下新建config.xml http://mybat…
编译mybatis时,idea不会将mybatis的xml映射文件一起打包进jar,即在编译好的jar包里缺少mybatis映射文件,导致网站加载失败 为解决这个问题,可在mybatis对应module的pom.xml中,找到<build></build>,,在其中添加如下代码即可. <!--将mybatis的xml映射文件一起进行打包--> <resources> <resource> <directory>src/main/jav…
目录 关于mybatis注解 初次简单使用mybatis注解示例 利用注解实现指定映射 使用注解实现表间关联(1对1) 关于mybatis注解 注解在java中特别常见,mybatis中也支持注解. mybatis的注解主要功能是:简化mapper.xml文件,简单的sql可以使用注解,而不用在取mapper.xml中写sql了,但是动态sql或者稍微复杂的sql,还得写在mapper.xml中. mybatis的注解和mapper.xml可以共存. 需要注意: mybatis配置文件在加载映射…
错误 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 的出现,意味着项目需要xml文件来映射SQL语句,如果只使用接口进行SQL映射,不在本文讨论范围内. 我的项目的环境是IDEA下的Maven工程,而IDEA下的MAVEN工程中有一个特点就是,在src/main/java中,只有.java文件默认会被编译,而xml文件不会被编译.(出处) 的确这样的做法也比较符合Maven目录框架的…
在上篇文章中分析了mybatis解析<mappers>标签,<mybatis源码配置文件解析之五:解析mappers标签>重点分析了如何解析<mappers>标签中的<package>子标签的过程.mybatis解析<mappers>标签主要完成了两个操作,第一个是把对应的接口类,封装成MapperProxyFactory放入kownMappers中:另一个是把要执行的方法封装成MapperStatement. 一.概述 在上篇文章中分析了<…
简介 文档参考地址:http://www.mybatis.org/mybatis-3/zh/index.html MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码.MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好. SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序): cache – 给定命名空间的缓存配置.…
通常我们的xml映射文件会放在源码中,普通的java项目在编译时可以将src下的xml放到classes文件中. 但maven项目编译时是不会将xml放到classes文件中,从而导致我们的mybatis-config.xml找不到对应的xml映射文件. 解决方案: maven项目中建立resources资源目录,所有xml映射文件放入其中.…
不同的 Xml 映射文件,如果配置了 namespace,那么 id 可以重复:如果没有配 置 namespace,那么 id 不能重复: 原因就是 namespace+id 是作为 Map<String, MapperStatement>的 key 使用的,如果没有 namespace,就剩下 id,那么,id 重复会导致数据互相覆盖. 有了 namespace,自然 id 就可以重复,namespace 不同,namespace+id 自然 也就不同.…
1. 每个持久化对象都需要提供一个以类名命名的映射文件,映射文件需要放在和po类同一目录下. 2. 如下是wefepo的映射文件: <hibernate-mapping> <class name="com.lovo.po.WifePO" table="t_wife"> <id name="id" column="w_id" type="int"> <generato…
ylbtech-Java-MyBatis-MyBatis3-XML映射文件:XML映射文件 1. XML 映射文件 MyBatis 的真正强大在于它的映射语句,这是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码.MyBatis 为聚焦于 SQL 而构建,以尽可能地为你减少麻烦. SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出): cache – 对给定命名空间的缓存配置…
使用 Maven 部署 Java Web 项目时,Hibernate 的映射文件 *.hbm.xml 没有被打包部署到目标目录下,解决方法:在 pom.xml 文件中 <build> 节点下添加以下代码: <build> …… <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.hbm.xml&…
一:关系维护 --->inverse默认值false,表示不放弃关系的维护.   --->inverse="true"配置在那一端,表示那一端xml对应的po放弃关系的维护(交由hibernate内部进行维护),由另一端进行关系维护.  例子:学生班级模型[多对一模型]一端放弃关系的维护,由学生端进行关系维护              ----->班级的xml映射文件中<set name="students" class="Stud…