mybatis一对一

mybatis高级查询

限于喜欢 提交于 2019-12-17 04:01:56
1.一对一 <!-- 订单查询关联用户的resultMap --> <resultMap id="OrdersUserResultMap" type="nuc.edu.rwenjie.pojo.Orders"> <!-- 配置要映射的订单信息 --> <!-- id:配置查询列中的唯一标识, 订单信息中的唯一标识,如果有多个列组成唯一标识,配置多个id column:订单信息的唯一标识的列 property:订单信息的唯一标识的列 所映射到Orders中的哪个属性 --> <id column="id" property="id"/> <result column="user_id" property="userId"/> <result column="createtime" property="createtime"/> <result column="note" property="note"/> <!-- 配置映射的关联的用户信息--> <!-- association:用于映射关联查询单个对象的信息 property:要将关联查询对象的用户信息映射到Orders中的哪个属性 --> <association property="user" javaType="nuc.edu.rwenjie.pojo.Users"> <!-- id:关联查询的用户的唯一标识 --> <id

1个月时间整理了2019年上千道Java面试题,近500页文档!

馋奶兔 提交于 2019-12-13 08:16:52
Spring 面试题 1、一般问题 1.1、不同版本的 spring Framework 有哪些主要功能? 1.2、什么是 spring Framework? 1.3、列举 spring Framework 的优点。 1.4、spring Framework 有哪些不同的功能? 1.5、spring Framework 中有多少个模块,它们分别是什么? 1.6、什么是 spring 配置文件?.... 1.7、spring 应用程序有哪些不同组件? 1.8、使用 springg 有哪些方式 2、依赖注入(Ioc) 2.1、什么是 Spring IOC 容器? 2.2、什么是依赖注入? 2.3、可以通过多少种方式完成依赖注入? 2.4、区分构造函数注入和 setter 注入。 2.5、spring 中有多少种 IOC 容器? 2.6、区分 BeanFactory 和 ApplicationContext。. 2.7、列举 IoC 的一些好处。 2.8、Spring IoC 的实现机制。 3、Beans 3.1、什么是 spring bean?.. 3.2、spring 提供了哪些配置方式? 3.3、spring 支持集中 bean scope? 3.4、spring bean 容器的生命周期是什么样的? 3.5、什么是 spring 的内部 bean? 3.6、什么是 spring

22mybaits注解开发

孤街醉人 提交于 2019-12-12 22:32:14
这几年来注解开发越来越流行,Mybatis 也可以使用注解开发方式,这样我们就可以减少编写 Mapper 映射文件了。 1.常用注解说明 @Insert:实现新增 @Update:实现更新 @Delete:实现删除 @Select:实现查询 @Result:实现结果集封装 @Results:可以与@Result 一起使用,封装多个结果集 @ResultMap:实现引用@Results 定义的封装 @One:实现一对一结果集封装 @Many:实现一对多结果集封装 @SelectProvider: 实现动态 SQL 映射 @CacheNamespace:实现注解二级缓存的使用 2.使用Mybatis注解实现基本CRUD 2.1查询数据库 2.2创建maven工程导入jar包的坐标 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion

【大厂面试真题350道】性能优化+微服务+并发编程+开源框架+分布式

两盒软妹~` 提交于 2019-12-11 08:28:37
一,性能优化专题: 1.tomcat性能调优 怎么给tomcat调优 如何加大comcat连接数 怎么加大tomcat的内存 tomcat中如何禁止列目录下的文件 Tomcat有几种部署方式 tomcat的优化经验 2.jvm性能优化专题: Java类加载过程 java内存分配 描述一下jvm加载class文件的原理机制 GC是什么?为什么要有GC? 简述java垃圾回收机制 如何判断一个对象是否存活?(或者GC对象的判定方法) 垃圾回收的优点和原理。并考虑2种回收机制。 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗? 有什么办法主动通知虚拟机进行垃圾回收? java中会存在内存泄漏吗,请简单描述。 深拷贝和浅拷贝 syatem,gc**() 和runtime,gc ()**会做做什么事情? finalize方法什么时候被调用?析构函数(finalizatinon)的目的是什么? 如何对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存? 什么是分布式垃圾回收(DGC)?它是如何工作的? 串行(serial)收集器和吞吐量(throughout)收集器的区别是什么? 在Java中,对象什么时候可以被垃圾回收? 简述Java内存分配与回收策率以及minor GC和majorGC。 jvm的永久代中会发生垃圾回收吗? Java中垃圾收集的方法有哪些?

Mybatis常见面试题总结

半城伤御伤魂 提交于 2019-12-09 01:55:10
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学习日记3

雨燕双飞 提交于 2019-12-07 12:10:27
1.mybatis的延迟加载 问题:在一对多中,当我们有一个用户,他有100个账户 在查询用户的时候,要不要把关联的账户查出来? 在查询账户的时候,要不要把关联的用户查出来? 解决:在查询用户的时候,用户下的账户信息应该是,什么时候使用,什么时候查询出来,如果每次查询用户的时候都把关联的账户信息查询出来,会浪费内存空间 但是在查询账户时,账所属的用户信息应该是随着账户查询时一起查询出来 1.1.什么是延迟加载: 延迟加载:在真正使用数据时才发起查询,不用的时候不查询,所以是按需加载(懒加载)。 1.2.延迟加载的优缺点 延迟加载的好处:先从单表查询,需要时再从关联表去关联查询,大大提高数 据库性能,因为查询单表要比关联查询多张表速度要快。 延迟加载的坏处:因为只有当需要用到数据时,才会进行数据库查询,这样在大批量数据查询时,因为查询工作也要消耗 时间,所以可能造成用户等待时间变长,造成用户体验下降。 2.多对一、一对一延迟加载的实现 使用assocation实现延迟加载 需求:查询账户信息同时查询用户信息 2.1 账户的持久层 DAO 接口 public interface IAccountDao { /** *查询所有账户,同时获取账户的所属用户名称以及它的地址信息 * @return */ List<Account> findAll(); } 2.2. 账户的持久层映射文件 <

mybatis精讲(五)--映射器组件

妖精的绣舞 提交于 2019-12-06 20:28:35
目录 前言 标签 select insert|update|delete 参数 resultMap cache 自定义缓存 # 加入战队 微信公众号 前言 映射器之前我们已经提到了,是mybatis特有的组件: java+xml组合的方式。对于Java类和xml的编写也很简单。值得注意的是需要将Java编写的mapper注册到mybatis中来。之前的注册的方式通过xml。到后续通过spirng来管理通过@Mapper就很方便了。 标签 Java实现的接口Mapper很简单,就是已接口的形式暴露,方法和参数和我们正常的写一样,就是在多参数的时候我们需要通过 @Param 注解标注在sql中的变量名。 但是xml就需要按照mybatis的格式来写了。xml中有select、insert、update、delete等对应方法的标签。除了这些还有sql、resultMap、 select 严格来说,select及下面的insert这些都有一个id,这些id形成JavaMapper中对应的方法。mybatis也是通过id来定位到要执行的sql的。我们通过parameterType、resultType定义入参和出参的类型。Type也可以事先定义为对应的Map 即 parameterMap、resultMap。 在select标签中还有一个flushCache用来表示是否清楚缓存在查询

mybatis

喜你入骨 提交于 2019-12-06 16:24:20
什么是MyBatis? MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 为什么要使用MyBatis? 无论是Mybatis、Hibernate都是ORM的一种实现框架,都是对JDBC的一种封装! 持久层中的几种技术: Hibernate(一个比较老旧的框架) 优点:用起来十分舒服,sql代码都不用写 缺点:处理复杂业务时,灵活度差, 复杂的HQL难写难理解,例如多表查询的HQL语句 JDBC 优点:易理解,几个固定的步骤 缺点:开发起来太麻烦,什么都需要自己写 SpringDAO 其实是JDBC的一层封装就类似于dbutils一样 可以认为,MyBatis就是jdbc和Hibernate之间的一个平衡点 MyBatis 在 IBatis 的基础上做了哪些大的改进? 有接口绑定,包括注解绑定sql和xml绑定Sql; 动态sql由原来的节点配置变成OGNL表达式; 在一对一,多对一的时候引进了association,在一对多的时候引入了collection节点,不过都是在resultMap里面配置。

MyBatis关联映射

两盒软妹~` 提交于 2019-12-05 11:35:04
主键映射 主键映射作用 当数据插入操作不关心插入后数据的主键(唯一标识),那么建议使用 不返回自增主键值 的方式来配置插入语句,这样可以避免额外的SQL开销. 当执行插入操作后需要立即获取插入的自增主键值,比如一次操作中保存一对多这种关系的数据,那么就要使用 插入后获取自增主键值 的方式配置. ​ mybatis进行插入操作时,如果表的主键是自增的,针对不同的数据库相应的操作也不同。基本上经常会遇到的就是Oracle Sequece 和 Mysql 自增主键,解释如下。 自动递增 ​ 一对多的那种表结构,在插入多端数据时,需要获取刚刚保存了的一段的主键。那么这个时候,上述的配置就无法满足需要了。为此我们需要使用mybatis提供 useGeneratedKeys 和 keyProperty 来单独配置针对自增逐渐的处理。 Mysql自增主键配置 针对于Mysql这种自己维护主键的数据库,可以直接使用以下配置在插入后获取插入主键, <insert id="insert" useGeneratedKeys="true" keyProperty="id"> INSERT INTO tb_user ( username, password, phone, email, created, updated ) VALUES ( #{username}, #{password}, #{phone

MyBatis从入门到精通(第6章):MyBatis 高级查询->6.1 高级结果映射

半世苍凉 提交于 2019-12-05 06:44:12
jdk1.8、MyBatis3.4.6、MySQL数据库5.6.45、Eclipse Version: 2019-12 M2 (4.14.0) 本章主要包含的内容为 MyBatis 的高级结果映射 ,主要处理数据库一对一 、一对多的查询 ,另外就是在 MyBatis 中使用存储过程的方法 ,处理存储过程的入参和出参方法 ,最后会介绍 Java 中的枚举方法和数据库表字段的处理方法 。 6.1 高级结果映射 来源: https://www.cnblogs.com/MarlonKang/p/11911315.html