Mybatis
文章平均质量分 58
。。。
shangshanzixu
这个作者很懒,什么都没留下…
展开
-
Mybatis面试题总结
1.jdbc、mybatis、hibernate三者优缺点?JDBC:编写SQL – 预编译SQL – 设置参数 – 执行SQL – 封装结果JDBC的优缺点:执行效率高但是工作量大并且繁杂.Hibernate:[编写SQL – 预编译SQL – 设置参数 – 执行SQL – 封装结果]Hibernate优缺点:是一个ORM(Object relation Mapping)层的全自动框架,不需要我们写任何SQL语句,完全自动进行映射,但是对于复杂的查询情况,我们一般需要定制SQL和对SQL进行原创 2021-01-17 18:58:59 · 108 阅读 · 0 评论 -
mybatis之自定义插件
要写一个mybatis的插件,我们大概分为以下三步1.书写插件类,实现interceptor接口2.书写插件的方法标签(为四大对象的哪个方法执行拦截操作)3.在mybatis全局配置中配置我们书写的插件案例假设现在我们需要通过ID属性从数据库查询员工信息,我们通过自定义插件,使得每次查询的ID参数都被我们改为查询1号员工,实现偷梁换柱。插件类 @Intercepts({ @Signature(type = StatementHandler.class,原创 2021-01-14 19:15:30 · 429 阅读 · 0 评论 -
Maven下mybatis和Spring整合
所需依赖<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <gro原创 2021-01-13 18:27:25 · 79 阅读 · 0 评论 -
使用PageHelper插件实现分页功能
在我们使用mybatis进行数据库的访问时,分页的操作和不需要分页的操作往往需要两个方法完成,但是其实他们有大量的代码重复,那么有没有什么方案解决这个问题呢?答案就是使用分页插件。分页插件的原理:PageHelper内部都是创建了分页page,调用分页的地方传入page,最后在mybatis中的拦截器中取得传入的page并利用反射重新拼接sql再执行。下面我们看代码案例结构1.工具类2.配置文件4.service层5.控制层6.视图层7.测试结果1.工具类package com.openlab.u原创 2020-08-10 21:21:17 · 673 阅读 · 0 评论 -
使用ThreadLocal封装mybatis的工具类
ThreadLocal中文翻译为线程本地变量。为什么能做到线程之间的threadlocal彼此隔离呢?首先每个线程内部有一个自己的ThreadLocalMap的引用,每个线程获取threadlocal时都是从自己的threadlocalMap中进行获得。每个threadlocal变量作为key,对应线程专属的值为value。ThreadLocalMap实际上维护了一个table数组,通过threadlocal的hash值获取在table数组中存储的位置,区分不同的threadlocal变量在table中原创 2020-08-10 10:59:26 · 449 阅读 · 0 评论 -
四表联查后续~不同用户显示不同的菜单
写在题前:如果是mybatis逆向工程生成的代码一定注意变量大小写!一定注意变量大小写!一定注意变量大小写!(重要的事情说三遍)工程结构出于方便,service层略去pom文件配置IDEA和eclipse有部分地方不同所以需要多导入一些依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2原创 2020-08-07 20:05:25 · 223 阅读 · 0 评论 -
Tomcat结合mybatis简单实现用户登录注册功能
用户登录和注册功能是我们平时在门户网站中最常见的功能之一,本文采用servlet结合mybatis完成用户登录的注册功能的简单实现(也可以使用JDBC实现dao层)。视图层登录页<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Title</title></head><body>原创 2020-08-02 22:30:48 · 2491 阅读 · 2 评论 -
Mybatis分页查询
现有数据库user表和role表,我们想通过对用户名得模糊查询出对应记录并使用mybatis的分页技术数据库的表如下Mapper接口如下public interface UserMapper { public List<User> queryByLimit(@Param("userName") String userName, @Param("start") Integer start,原创 2020-07-31 18:36:42 · 241 阅读 · 0 评论 -
使用mybatis进行四表联查
文章目录一、问题背景二、实际问题三、问题解决四、sql语句与XML映射文件五、测试一、问题背景先数据库有用户表user、角色表role、菜单表menu、功能表funs和角色菜单关系表role_menu。各表的字段及数据如下用户user表角色role表角色菜单关系表role_menu菜单menu表功能funs表二、实际问题表与表之间的关系类与类之间的关系四表连查 user、role、menu、funs、role_menu,通过username来进行查询用户信息、对应的角色信原创 2020-07-23 20:32:35 · 2337 阅读 · 0 评论 -
Mybatis中的动态sql
在mybatis中,因为我们传入的参数是随机的,所以如果没有动态sql的情况下,为了适用于不同的参数情形,我们必须写不同的sql映射,因此很是麻烦,所以mybatis提供了动态sql的功能帮我们解决这些问题。1.附上官网链接,这方面官方文档写的很详细官方文档2.网上冲浪过程中博主也发现一些写的比较好的博客这里给出一个链接动态sql...原创 2020-07-20 22:18:31 · 71 阅读 · 0 评论 -
Mybatis的缓存机制
为了加快程序的执行效率,mybatis提供了两种缓存。一级缓存(默认开启)一级缓存默认是sqlSession级别的,同一个sqlSession执行的查询语句会被放入一级缓存中进行保存,下次执行相同语句前会直接从缓存中获取结果。一级缓存失效的条件不同的sqlSession不同的sql语句(这个显而易见)中途执行了增删改操作手动刷新了缓存一级缓存的内部原理Mybatis内部存储缓存使用的是一个HashMap对象,key为 hashCode + sqlId + sql 语句。而value值就原创 2020-07-19 22:36:16 · 127 阅读 · 0 评论 -
Mybatis的传参处理与结果集处理
一、传参处理在Mybatis的使用过程中,Java接口方法中的参数如何与sql语句所需要传入的参数一一对应起来是一件非常重要的事情,接下来我们来看看Java各类参数在mybatis中的处理。1.单个简单类型参数(Java内置类型,基本类型等)mybatis不会做特殊处理,取值方式:#{参数名/任意名}:取出参数值。2.多个简单类型二、多个参数:mybatis会做特殊处理:多个参数会被封装成 一个map,这个封装起来的map的key为param1...paramN,或者参数的索引(形参名)也可原创 2020-07-18 22:30:15 · 873 阅读 · 0 评论 -
Mybatis使用步骤详解
1.什么是mybatis?MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。看完这个有些朋友对持久层这个词可能存在一些疑问,所以我们来看看数据持久化和数据持久层的定义。- 数据持久化狭义的理解: “持久化原创 2020-07-10 21:35:15 · 353 阅读 · 0 评论