ibatis

mybatis获取执行的sql语句

房东的猫 提交于 2020-08-12 00:57:14
package com.jcl.orm.tkmapper.intercept; import com.alibaba.dubbo.common.utils.CollectionUtils; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.mapping.ParameterMapping; import org.apache.ibatis.plugin.*; import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.session.Configuration; import org.apache.ibatis.type.TypeHandlerRegistry; import java.text.DateFormat; import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Properties; import

Python元类实战,通过元类实现数据库ORM框架

情到浓时终转凉″ 提交于 2020-08-11 18:41:49
本文始发于个人公众号: TechFlow ,原创不易,求个关注 今天是 Python专题 的第19篇文章,我们一起来用元类实现一个简易的ORM数据库框架。 本文主要是受到了廖雪峰老师Python3入门教程的启发,不过廖老师的博客有些精简,一些小白可能看起来比较吃力。我在他的基础上做了一些 补充和注释 ,尽量写得浅显一些。 ORM框架是什么 如果是没有做过后端的小伙伴上来估计会有点蒙,这个ORM框架究竟是什么?ORM框架是后端工程师常用的一个框架,它的英文全称是Object Relational Mapping,即 对象-关系映射 框架。顾名思义就是把关系转化成对象的框架,关系这个词我们在哪里用的最多呢? 显然应该是数据库。之前我们在分布式的文章介绍关系型数据库和非关系型数据库的时候就着重介绍过关系的含义。我们常用的MySQL就是经典的关系型数据库,它存储的形式是表,但是 表承载的数据其实是两个实体之间的"关系" 。比如学生上课这个场景,学生和课程是两个主体(entity),我们要记录的是这两个主体之间的关系,也就是学生上课这件事。 而ORM框架做的事情是将这些关系映射成类,这样我们可以将这张表当中增删改查的功能抽象成类当中的方法。这样我们就可以通过调用类的方式来操作数据库了,从而达到 高度抽象业务逻辑、降低用户使用难度 的目的。

【mybatis】 mybatis 工作原理底层源码全流程解析

时光毁灭记忆、已成空白 提交于 2020-08-11 14:54:25
mybatis 工作原理 1. SqlSessionFactory 初始化 作用:加载Mybatis配置,用于生成SqlSession用于数据库操作 // 加载mybatis全局配置文件,生成SqlSessionFactory InputStream inputStream = Resources.getResourceAsStream(factedfilePath); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 全局配置文件:SqlMapConfig.xml <configuration> <!-- myybatis 变量 --> <properties resource="db.properties"/> <!-- 实体别名,用于ResultMap映射 --> <typeAliases> <package name="com.zhiwei.entity"/> </typeAliases> <!-- 累心处理器:用于ResultSetHandler解析 --> <typeHandlers> <typeHandler handler="com.zhiwei.advanced.type.AddressTypeHandler"/> </typeHandlers> <!-- 环境配置:

JPA和Hibernate有什么区别? [关闭]

痞子三分冷 提交于 2020-08-11 01:40:08
问题: I understand that JPA 2 is a specification and Hibernate is a tool for ORM. 我知道JPA 2是一个规范,而Hibernate是ORM的工具。 Also, I understand that Hibernate has more features than JPA 2. But from a practical point of view, what really is the difference? 另外,我了解到Hibernate具有比JPA 2更多的功能。但是从实际的角度来看,真正的区别是什么? I have experience using iBatis and now I'm trying to learn either Hibernate or JPA2. 我有使用iBatis的经验,现在我正在尝试学习Hibernate或JPA2。 I picked up Pro JPA2 book and it keeps referring to "JPA provider". 我拿起Pro JPA2书籍,并且一直指“ JPA提供者”。 For example: 例如: If you think a feature should be standardized, you should speak up

mybatis文件映射之select操作返回List集合

会有一股神秘感。 提交于 2020-08-10 12:08:57
在EmplyeeMapper.java中: public List<Employee> getEmpByLastNameLike(String lastName); 在EmployeeMapper.xml中 < select id ="getEmpByLastNameLike" resultType ="com.gong.mybatis.bean.Employee" > select id,last_name lastName,gender,email from tbl_employee where last_name like #{lastName} </ select > 由于数据库中的字段last_name与实体类中的lastName名字不对应,因此需要用别名来指代。 之后进行单元测试: package com.gong.mybatis.test; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory;

mybatis文件映射之select操作返回List集合

给你一囗甜甜゛ 提交于 2020-08-10 09:13:13
在EmplyeeMapper.java中: public List<Employee> getEmpByLastNameLike(String lastName); 在EmployeeMapper.xml中 < select id ="getEmpByLastNameLike" resultType ="com.gong.mybatis.bean.Employee" > select id,last_name lastName,gender,email from tbl_employee where last_name like #{lastName} </ select > 由于数据库中的字段last_name与实体类中的lastName名字不对应,因此需要用别名来指代。 之后进行单元测试: package com.gong.mybatis.test; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory;

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 解决方法

假如想象 提交于 2020-08-09 18:18:59
造成的原因:    1.xml中的名字与mapper中的名字未对应,导致报错。       解决方法: 修改名字相对应即可。     2.Maven加载时只会对.java文件进行编译,不会对其他类型的文件进行编译       解决方法:① 将xml文件夹复制到到target中的Mapper下              (不推荐)              ②将xml移动到resources中去              (不推荐)              ③配置pom.xml和application.properties               (1)pom.xml中加入下面代码 <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>                  (2)application.properties中加入下面代码 mybatis-plus.mapper-locations=classpath:com/llc/eduservice/mapper/xml /

框架修炼之ssm-Mybatis学习笔记一

会有一股神秘感。 提交于 2020-08-08 18:06:57
早期ssh框架:spring struts2 hibernate. 目前使用ssm:spring(service) springMVC(servlet) mybatis(jdbc DbUtil) JDBC回顾 1 准备数据库tb_user @Test public void test ( ) throws Exception { // 1 加载驱动 Connection connection = null ; PreparedStatement Statement = null ; ResultSet resultSet = null ; try { Class . forName ( "com.mysql.jdbc.Driver" ) ; // 2 获取连接 connection = DriverManager . getConnection ( "jdbc:mysql://localhost:3306/mybatis" , "root" , "1234" ) ; // 3 获取preparestatement String sql = "select * from tb_user where id = ?" ; Statement = connection . prepareStatement ( sql ) ; // 4 设置参数 Statement . setLong (

【mybatis】mybatis 拦截器工作原理源码解析

為{幸葍}努か 提交于 2020-08-07 08:29:42
mybatis 拦截器工作原理(JDK动态代理) 1. mybatis 拦截器案例 场景:分页查询,类似成熟产品: pagehelper , 这里只做简单原理演示 1.0 mybatis全局配置 SqlMapConfig.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties resource="db.properties"/> <typeAliases> <package name="com.zhiwei.entity"/> </typeAliases> <plugins> <plugin interceptor="com.zhiwei.advanced.plugin.MyInterceptor"/> </plugins> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type=

我的开发日记(一)

时光怂恿深爱的人放手 提交于 2020-08-07 07:34:27
前些日子公司打算开发一个集成各种管理功能的大平台,让我负责测试相关服务的开发。首次重任,着实让我这阵子忙成了狗。上周终于立项完成了,本周正式进入开发阶段,大致需求如下: 测试账号管理 公共数据管理 测试用例管理 测试用例集合管理 测试用例运行结果报告 大概这五大块功能,由于很多之前学过一点的 springboot 的只是也忘记的差不多了,提前复习了一下。果然发现很多知识点学的时候不精通,有些深一点的难点,以前都没有考虑到。 幸好我提前准备了,不然10天真就不一定能弄完。本身平台是 Python 开发的,有单独的前端工程师。开发用的 moco 功能也是前端 mockJS 做的,然后后端做兼容处理。测试服务也得去解析这个 mockJS 的数据,以前没咋接触过,心里有点慌。 公共数据管理 是测试用例中需要一些公共参数和公共 header 里面的简单参数,这个比较简单,数据完全是我处理和存储,所以先准备开发了。下面分享一些这方面的需求和技术实现。 需求原型图 接口的 mock 文档 充电内容 这个基本功能的开发比较简单,其中一个如何存储公共数据,本来我设计的整个公共数据作为一个 json对象 ,可惜被否了,因为这块的公共数据会被导入到接口的参数和 Header 中,要与 mockJS 的数据格式一致,所以存储成一个 array 的形式,每一行取 text 和 value , type