mybatis一对一

mybatis中一对一关系映射

∥☆過路亽.° 提交于 2019-12-01 13:58:52
一对一关系中普通的配置方式 一.多表连接查询语句: <select id="selectStudentWithAddress" parameterType="int" resultMap="StudentWithAddressResult"> select s.stud_id, s.name, s.email,s.dob,s.phone, a.addr_id, a.street, a.city, a.state, a.zip,a.country from students s left outer join addresses a on s.addr_id=a.addr_id where stud_id=#{id} </select> 1. 把所有的查询结果,在一个resultMap中映射 <resultMap type="Student" id="StudentWithAddressResult"> <id property="studId" column="stud_id" /> <result property="name" column="name" /> <result property="email" column="email" /> <result property="phone" column="phone" /> <!--adderss是Student的内置对象

Mybatis最权威的知识点

ぐ巨炮叔叔 提交于 2019-12-01 13:28:54
1、什么是Mybatis? (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 (2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 (3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。 2、Mybaits的优点: (1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 (2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; (3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 (4

Mybatis下

南楼画角 提交于 2019-12-01 10:23:24
目录 动态SQL 动态SQL语句的标签: 标签 标签 标签 标签 标签 对象的关联映射 对象之间的关联关系有: 通过映射文件,实现对象和对象的关系 子查询:配置用户找到评论 连接查询: 对比子查询和内连接: 延迟加载 缓存 作用: MyBatis自带的缓存: 一级缓存 二级缓存 动态SQL 多条件查询常规实现: String sql = "select * from tb_user where 1=1"; if(填写用户){ sql += " and username = xxx"; } .... 拼接比较复杂,容易出错 把业务逻辑耦合到数据库操作(DAO)中 动态SQL是MyBatis的重要特性,能够在映射文件的SQL语句中,加入逻辑判断,自动拼接SQL,从而实现复杂功能 动态SQL语句的标签: 基本的条件判断 配置查询条件 配置update语句 自定义条件配置 循环标签 标签 语法: SQL语句 SQL语句 当条件成立,if中的SQL语句会和外面SQL语句拼接到一起 <select id="selecUser" parameterType="User" > select * from tb_user where <if test="username != null"> username = #{username} </if> <if test="realname != null

阿里最新38道Java面试题解析(MyBatis+消息队列+Redis)

∥☆過路亽.° 提交于 2019-12-01 08:48:55
一、谈谈你对 MyBatis 的理解? 1. Mybatis是一个半ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 Statement 等繁杂的过程。程序员直接编写原生态 SQL,可以严格控制 SQL 执行性能,灵活度高。 2. MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。3. 通过 XML 文件或注解的方式将要执行的各种 Statement 配置起来,并通过 Java 对象和 Statement 中 SQL 的动态参数进行映射生成最终执行的 SQL 语句,最后由 MyBatis 框架执行 SQL并将结果映射为 Java 对象并返回。(从执行 SQL到返回 Result 的过程)。 二、MyBaits 的优缺点有哪些? § 优点: 1. 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在 XML 里,解除 SQL 与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态 SQL 语句,并可重用; 2. 与 JDBC 相比,减少了代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接; 3. 很好的与各种数据库兼容(因为

MyBatis中的关联查询

柔情痞子 提交于 2019-12-01 07:25:50
一:在使用MyBatis进行关联查询的时候,首先要确定表与表之间的关联关系   表与表之间一般存在三种关系,即一对一,一对多,多对多关系。   下面分别就三种关系讲解 1.一对一和一对多在Mybatis中进行关联查询的思路都是一样的,在一个实体类中创建另一个实体类的对象作为当前类的属性,这样的话数据库中表与表之间的关联关系就体现在了我们的实体类当中 如下,在我们的账单类(SmbmsBill)中添加了一个供应商类(SmbmsProvider)的对象 当我们查寻所有订单的时候就可以连带的把该账单上的供应商也一并查询出来 2.接下来我们开始创建接口以及查询方法 方法创建完成之后在我们的Mapper的配置文件中编写对应方法的实现 由于我们要查询的结果包含了两张表中的数据,MyBatis的自动映射无法把关联对象中的数据自动映射成功,所以我们需要进行手动映射 3.创建相应的resultMap节点 <resultMap id="SmbmsProviderResult" type="SmbmsBill">  <!--在此处需要主对象手动指定id和result节点进行手动映射-->  <!--property代表关联对象在实体类中的属性名 javaType 代表他的类型--> <association property="smbmsProvider" javaType="SmbmsProvider"

MyBatis关联映射

柔情痞子 提交于 2019-12-01 07:24:09
MyBatis 关联映射 一、Dao层的接口的内容 //一对多关联查询 public SmbmsRoleEntity getAllByRoleId(Integer id); //多对一关联查询 查询所有用户信息 包含角色信息 public List<User> getUserList(); //多对多关联查询 //查询所有学生信息 以及授课教员 public List<Student> getStudentInfo(); //自查询 //查询 河南省下的所有子集 public City getCityAndChildCitys(Integer cid); 二、xml文件的内容 <mapper namespace="com.marketsys.dao.ProviderTest"> <!--由于是关联查询 返回的是多张表中的结果集 ,必须定义resultMap映射--> <!--一对多关联查询--> <!--查询经理角色以及该角色下的员工集合--> <resultMap id="ById" type="com.marketsys.entity.SmbmsRoleEntity"> <id property="rid" column="rid"></id> <result property="roleName" column="roleName"></result> <!-

解决 mybatis 中相互关联的两种表数据在返回前端时一直循环查询,直到StackOverFlow报错

落花浮王杯 提交于 2019-12-01 07:12:12
原代码设计: 一个用户有多个账户,是一对多的关系,用Collection集合关联;一个账户独属于一个用户,是一对一的关系,用association来关联; UserMapper.xml <mapper namespace="com.xuetu.springboot.mapper.UserMapper"> <!-- 定义User的resultMap--> <resultMap id="userMap" type="user"> <id property="id" column="id"></id> <result property="username" column="username"></result> <result property="address" column="address"></result> <result property="sex" column="sex"></result> <result property="birthday" column="birthday"></result> <!-- 配置user对象中accounts集合的映射 --> <collection property="accounts" ofType="account" select="com.xuetu.springboot.mapper.AccountMapper

Mybatis

ぃ、小莉子 提交于 2019-12-01 01:21:02
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/a745233700/article/details/80977133 1、什么是Mybatis? (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 (2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 (3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。 2、Mybaits的优点: (1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 (2

持久层框架MyBatis学习(5)-mybatis关联关系

本秂侑毒 提交于 2019-11-30 09:30:39
一,商品订单数据模型 多角度看,一个订单可以关联一个一个用户,这是一对一。从用户角度的看,一个用户可以有多个订单,这是一对多关系。 二,一对一查询 查询所有订单信息,关联查询下单用户信息 1.方法一 使用resultType,定义订单信息pojo类,此pojo类中包括了订单信息和用户信息 1)定义一个pojo类: public class OrdersUser { private int id ; private int user_id ; private String number ; private Date createtime ; private String note ; private String username ; private Date birthday ; private String sex ; private String address ; //get/set方法。。。。 2)映射文件 < mapper namespace = " com.djc.mybatis.mapper.OrdersMapper " > < select id = " findOrdersUserList " resultType = " ordersUser " > SELECT o.*,u.username,u.birthday,u.sex,u.address FROM

Java 最常见19个模块面试题—第十三块答案

谁说我不能喝 提交于 2019-11-29 23:55:14
Java 最常见19个模块面试题—第十三块答案 十三、Mybatis 1. mybatis 中 #{}和 ${}的区别是什么? #{}是预编译处理, KaTeX parse error: Expected 'EOF', got '#' at position 21: …串替换; Mybatis在处理#̲{}时,会将sql中的#{}替… {}时,就是把${}替换成变量的值; 使用#{}可以有效的防止SQL注入,提高系统安全性。 2. mybatis 有几种分页方式? 数组分页 sql分页 拦截器分页 RowBounds分页 3. mybatis 逻辑分页和物理分页的区别是什么? ** 物理分页速度上并不一定快于逻辑分页,逻辑分页速度上也并不一定快于物理分页。 物理分页总是优于逻辑分页:没有必要将属于数据库端的压力加诸到应用端来,就算速度上存在优势,然而其它性能上的优点足以弥补这个缺点。 4. mybatis 是否支持延迟加载?延迟加载的原理是什么? Mybatis仅支持association关联对象和collection关联集合对象的延迟加载,association指的就是一对一,collection指的就是一对多查询。在Mybatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnabled=true|false。 它的原理是,使用CGLIB创建目标对象的代理对象