ibatis

Mybatis 使用 mapper 接口规范的 一对一, 一对多,多对多映射

旧城冷巷雨未停 提交于 2020-05-07 21:25:42
首先的 是 最原始的 pojo 类来 做简单映射 简单 pojo 映射: < mapper namespace ="com.ghc.dao.UserDao" > < select id ="findUserById" parameterType ="int" resultType ="user" > SELECT * FROM user WHERE id = #{id} </ select > 简单 pojo 映射文件的配置 以下 都是对于原始基本的 pojo 类 进行包装扩展 后来实现 其他列的映射 一对一: < resultMap id ="findUserOrderMapper" type ="com.ghc.pojo.UserOrderWrapperFirst" > <!-- 因为继承自Order类,所以这些都可以看做是Order这个对象的基本属性 --> < id column ="id" property ="id" /> < result column ="user_id" property ="user_id" /> < result column ="number" property ="number" /> < result column ="createtime" property ="createtime" /> < result column ="note

MyBatis逆向工程生成配置 generator (生成pojo、mapper.xml、mapper.java)

混江龙づ霸主 提交于 2020-05-07 20:39:58
MyBatis逆向工程生成 mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对 单表 自动生成mybatis执行所需要的代码(mapper.java、mapper.xml、pojo…),可以让程序员将更多的精力放在繁杂的业务逻辑上。 企业实际开发中,常用的逆向工程方式:由数据库的表生成java代码。 ​ 之所以强调单表两个字,是因为Mybatis逆向工程生成的Mapper所进行的操作都是针对单表的,也许你可能会觉得那这就有点鸡肋了,但是在大型项目中,很少有复杂的多表关联查询,所以作用还是很大的。 介绍 MyBatis生成器(MBG)是MyBatis MyBatis 和 iBATIS 的代码生成器。它将为MyBatis的所有版本以及版本2.2.0之后的iBATIS生成代码。它将内省一个数据库表(或多个表),并将生成可用于访问表的工件。这减轻了设置对象和配置文件以与数据库表进行交互的麻烦。MBG试图对简单CRUD(创建,检索,更新,删除)的大部分数据库操作产生重大影响。您仍将需要手工编写SQL和对象代码以进行联接查询或存储过程。 官方仓库 官方文档 开始上代码 目录总体结构: 主要文件 pom依赖 <!--mybatis依赖--> <dependency> <groupId>org.mybatis.spring.boot</groupId>

要想精通Mybatis?从手写Mybatis框架开始吧!

陌路散爱 提交于 2020-05-07 19:47:13
1、Mybatis组成 动态SQL Config配置 Mapper配置 2、核心源码分析 Configuration源码解析 SqlSessionFactory源码解析 SqlSession源码解析 SqlSessionManager源码解析 3、手写Mybatis框架 Mybatis是什么? Mybatis是一种半自动ORM框架,前身是iBatis,源于“Internet”和“abatis”的组合,除了POJO和映射关系之外,还需要编写SQL语句; Mybatis映射三要素: POJO 映射规则 SQL Mybatis快速入门: 加入mybatis的依赖 添加mybatis的配置文件 场景介绍 编写实体类、mapper接口以及mapper xml文件; 编写测试代码 MyBatis核心流程三大阶段: 1.初始化阶段 读取XML配置文件和数据库配置文件中的信息加载到configuration对象中; 2.动态代理阶段 3.数据读写阶段 话说SqlSession Sqlsession意味着创建数据库会话,代表了一次与数据库的连接 是Mybatis对外提供数据访问的主要API(来试试iBatis编程的方式吧); 实际上Sqlsession的功能都是基于Excutor来实现的; MyBatis两种编程模型: Mybatis封装了iBatis编程模型

Mybatis技术原理理——整体流程理解

蹲街弑〆低调 提交于 2020-05-07 19:44:33
前言:2018年,是最杂乱的一年!所以你看我的博客,是不是很空! 网上有很多关于Mybatis原理介绍的博文,这里介绍两篇我个人很推荐的博文 Mybatis3.4.x技术内幕 和 MyBaits源码分析 !让我找到了学习的入口,当然另外你必须要看的官方文档 MyBatis学习 。那么有了这些知识,就让我们愉快的吃鸡之路吧! 一:你首先得知道的知识点。 1.1 JDBC   在个人看来, Mybatis的核心就是对SQL语句的管理!那么在JAVA环境下,对SQL的管理或者其他任何的实现,肯定是离不开JAVA的数据库操作接口,包括Connrction接口、Statement接口、PreparadStatement接口以及ResultSet接口等等的属性,你可以先通过JDBC来操作一次或者更多次的数据库。这个就不多做赘述了! 1.2 动态代理   不知道你最初有没有和我一样,有这样的疑问。Mybatis的mapper层明明就是一个接口,都没有实现类!即使是在TMapper.xml中做了映射,也没有看到任何关于接口的实现类,那他是怎么被实例化的呢,又是怎么实现方法的功能的呢?动态代理会告诉你答案! 先来看看jdk动态代理的一个小例子: 建立一个实体 public class TestDemo { private Integer id; private String name; public

spring boot 启动控制台循环打印 Logging initialized using &apos;class org.apache.ibatis.logging.stdout.StdOutImpl

亡梦爱人 提交于 2020-05-07 12:03:16
spring boot 启动控制台一直循环打印 Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl 如下图 出现该问题之前,改了mybatis的 mapper.xml 文件,新增了一个查询方法以及对应的 <select>标签。 怀疑是这个新增的标签以及sql 的问题,起初用 -- sql 以及 /* sql */ 注释掉标签内的sql ,重启springboot 发现问题依然存在,以为只是标签的问题,而不是sql 的问题。 各种检查标签<select>中的每个属性。后来发现是sql 的问题。 这三个指定参数类型的地方,类型不能用双引号括住。 来源: oschina 链接: https://my.oschina.net/iyinghui/blog/4268997

xml配置问题--------不允许有匹配 "[xX][mM][lL]" 的处理指令目标

[亡魂溺海] 提交于 2020-05-06 03:26:08
剪不断,理还乱,是BUG 相遇: 不允许有匹配 "[xX][mM][lL]" 的处理指令目标 在编写MyBatic框架时,纯手编写mybatic-config.xml文件,遇见了你 Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 7; 不允许有匹配 "[xX][mM][lL]" 的处理指令目标。 at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:80) at org.apache.ibatis

Spring从入门到入土——概述以及IOC理论推导

会有一股神秘感。 提交于 2020-05-05 19:51:44
Spring 概述以及IOC理论推导 Spring 概述 优点 组成 IoC基础 IoC本质 相关文章: 跟着官网学spring—快速入门指南 跟着官网学Spring—构建RESTful Web服务 Spring 概述 优点 Spring是一个开源免费的框架、容器 Spring是一个轻量级的框架、非侵入式的 控制反转Ioc、面向切面Aop 对事务的支持以及对框架的支持 总之: spring是一个轻量级的控制反转(Ioc)和面向切面(AOP)的容器(框架)。 组成 组成Spring框架的每个模块都可以单独存在,或者与其他一个或多个模块联合实现: 核心容器:核心容器提供Spring框架的基本功能,主要组件是BeanFactory,是工厂模式的实现。其BeanFactory使用控制反转(IOC)模式将应用程度的配置和依赖性规范与实际的应用程序代码分开 Spring上下文:是一个配置文件,向Spring框架提供上下文信息。主要包括:企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能 Spring AOP:通过配置管理特性,将面向切面的编程功能,集成到了Spring框架中,所以可以很方面的使Spring框架管理任何支持AOP的对象。也为基于Spring的应用程序中的对象提供了事务管理服务。使用SpringAOP可以不依赖组件,就可以将声明性事务管理集成到应用程序中。

Java 开发 MySQL 数据库规约

怎甘沉沦 提交于 2020-05-05 19:45:03
目录 Java 开发 MySQL 数据库规约 1. 建表规约 2. 索引规约 3. SQL 语句 4. ORM 映射 Java 开发 MySQL 数据库规约 1. 建表规约 No. 要求 1 【强制】 表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint (1 表示是,0 表示否)。 说明:任何字段如果为非负数,必须是 unsigned。 注意:POJO 类中的任何布尔类型的变量,都不要加 is 前缀,所以,需要在 <resultMap> 设置从 is_xxx 到 Xxx 的映射关系。数据库表示是与否的值,使用 tinyint 类型,坚持 is_xxx 的命名方式是为了明确其取值含义与取值范围。 正例:表达逻辑删除的字段名 is_deleted,1 表示删除,0 表示未删除。 2 【强制】 表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字 。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。 说明:MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、表名、字段名,都不允许出现任何大写字母,避免节外生枝。 正例:aliyun_admin,rdc_config,level3_name 反例:AliyunAdmin

[Redis]

余生颓废 提交于 2020-05-05 01:46:48
rememberMe>>>>:null Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7398fa2] was not registered for synchronization because synchronization is not active JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@5690c43b] will not be managed by Spring ==> Preparing: select id, name, password, salt from user where name = ? ==> Parameters: zhang3(String) < == Columns: id, name, password, salt < == Row: 5, zhang3, 7429017bd19cc345733399a2fb648cd7, +iaowhMUpqjV47c8Qma0Ng == < == Total: 1 Closing non transactional SqlSession [org.apache.ibatis

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

我与影子孤独终老i 提交于 2020-05-02 20:12:09
问题: 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