Mybatis源码1JDBC->mybatis主要流程->mybatis Excutor简介 一丶mybatis概述 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类
#{}和${}的区别是什么 动态 sql 是 MyBatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 MyBatis 会对其进行动态解析。MyBatis 为我们提供了两种支持动态 sql 的语法:#{} 以及 ${}。 区别 1)#{}是预编译处理,$ {}是字符串替换。 2)MyBatis在处理#{}时,会将SQL中的
1. Mybatis的一级缓存 Mybatis的一级缓存是默认开启的,你只要搭建一个Mybatis框架,就可以直接使用一级缓存。 一级缓存是SqlSession级别的,通过SqlSession查询的数据会被缓存,下次使用同一个SqlSession查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问,减轻数据库压力。 条件:
异常解决:Mapped Statements collection does not contain value for … 最近一直在弄springMVC+mybatis的整合,因为接触到这个框架之后发现这个框架确实要比ssh好得多所以我自己也在配置这个框架。但是在配置的过程中我遇到了一些问题,这些问题当我配置完成之后访问我的写的其中一个
核心组件 SqlSessionFactoryBuilder SqlSessionFactoryBuilder的作用就是通过XML或者Java代码来建造一个工厂(SqlSessionFactory),并且可以通过它建造多个这样的工厂。一旦完成建造工厂的任务,我们就应该废弃它,回收空间。所以它的生命周期只存在方法局部,完成工厂的建造即结束。 SqlS
正向工程 先创建java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程 逆向工程 先创建数据库表,由框架负责数据库表,反向生成如下资源 java实体类 mapper接口 mapper映射文件 创建逆向工程的步骤 pom配置文件 <build> <!--逆向工程插件-->
Mybatis核心配置文件 习惯上命名mybatis-config.xml,整合Spring之后,整个配置文件可以省略 核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息 标签顺序 顺序出错会报错 properties settings typeAliases typeHandlers objectFactory objectWrapperFa
预设的类型别名 这些别名都大小写不敏感 Mybatis的各种查询功能 查询出的数据只有一条: 可以通过实体类对象接收 可以通过List接收 可以通过Map接收 查询出的数据有多条: 可以通过Lst接收 可以通过Lsit<Map<String, Object>>接收 在mapper方法上使用@MapKey(value="
封装SqlSessionUtils /** * 获取SqlSession * @param b 是否自动管理事务 * @return 返回sqlsession */ public static SqlSession getSqlSession(boolean b){ SqlSession sqlSession = null; try {
特殊sql的执行 模糊查询 根据用户名模糊查询 List<User> selectLikeUserById(@Param("id")Integer id); 建议使用:直接用"%"#{value}"%"拼接 <select id="selectLikeUserById" resultType="User"> select * from t_user where id
首先我们先定义两个表t_emp / t_dept 由于我们的pojo中,使用了驼峰命名法,而数据表中使用的是下划线命名法 解决字段名和属性名不一致 为字段起别名,保持与属性名一致 select 列名 as 别名 from 表名 List<Emp> getAllEmpAs(); <select id="getAllEmpAs" parameterType="Emp">
MyBatis缓存 只对查询功能有效 一级缓存 一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问 一级缓存失效的四种情况 1、不同的SqlSeesion对应不同的一级缓存 2、同一个SqlSession但是查询条件不同 3
/** * mybatis-plus的listObjs()原理演示 */ @Test public void test2(){ List list = new ArrayList<>(); Dto d1 = new Dto(); d1.setId(1); d1.setName("java"); list.add(d1); Dto d2 = new Dto(); d2.setName("php"); list.add(d2); //相当于getBa
<select id="queryPage" resultType="cn"> select * from Tb WHERE 1 = 1 <if test="param2.urgentDegree!=null and param2.urgentDegree!=''"> and urgent_Degree = #{pa
1、在idea中配置database 连接数据库,用来在idea中编写sql脚本操作数据库 2、sql详细脚本如下: 1 --1.创建部门表 2 create table dept 3 ( 4 deptno int(2) unsigned primary key, 5 dname varchar(14), 6 loc varchar(13) 7 );
数据库中的字段是时间类型,要取出当天的数据,使用mybatis-plus 如何实现,思路是用 时间大于当天凌晨,小于当天23:59:59的时间 //调用的代码Date start = DateUtil.strToDateLong(DateUtil.dateToStr(new Date(), Locale.CHINA) + " 00:00:00"); Date end = DateUtil.strToDate
从页面传过来的时间为格林威治时间,例如:Thu Sep 21 11:56:46 CST 2017,而实体类里的是date字段,直接传给mybatis执行update会报错。解决方法就是在mybatis传入的时候,即在xml中加jdbcType=DATE,即可解决。createtime=#{itemsList.createtime,jdbcType=DATE}注:使用jdbcType时,因#符号,不使
1. 开发环境 IDE:IDEA 构建工具:maven4.0.0 MySQL版本:8.0.11、 记得创建好数据库 Mybatis版本:3.5.7 MySQL不同版本的注意事项 驱动类driver-class-name MySQL 5版本使用jdbc5驱动,驱动类使用:com.mysql.jdbc.Driver MySQL 8版本使用jdbc8驱动,驱动类使用:com.mysql.cj.
前言:我们通常使用mybatis过程中,对于判断一个变量是否为空的时候,使用 <if test="xxx != null and xxx !=''">进行。 有个小坑如下: <if test=" name!=null && name =='admin' "><if/> 这样子写会出现 后面的 name =='admin' 失效问题。 解决方案1: &l
<dependencies> <!-- MyBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> &
java -cp "D:\quan\install_work\idea2019\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true D:\quan\install_work\apache-maven-3.5.0-lib\com\baomidou\mybatis-plus
一、介绍 MyBatis 是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对
解决mapper文件路径问题 在pom.xml文件中配置resource <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include&
在pom.xml中添加lombok lombok通过简单的注解形式消除定义JavaBean时所需要生成的一系列属性方法:https://projectlombok.org/setup/maven 示例: <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</vers
创建JavaBean文件 package tk.mybatis.simple.mapper; import lombok.Data; @Data public class Indicator { private String indicatorName; } 文件结构: