回过头来重新梳理一下几个基础框架 一 持久层的变迁历史 想一想,我最原始的最初的持久层是jdbc,我大二不会框架用了很久原生的.... 2. 无法自定义SQL,优化困难 3、不支持动态SQL 三 Mybatis的优点? 半自动的Mybatis,之前的hibernate和springdata jpa对各种代码封装程度要高一点,提供了比较完整的工具,但是这也意味些我们对其自定义开发程度不高. 强大的Mybatis优点或者特性 1、 使用连接池对连接进行管理 2、 SQL 和代码分离,集中管理 3、 结果集映射 4、 参数映射和动态 SQL 5、 重复 SQL 的提取 6、 缓存管理
@toc一、MyBatis简介1.1 MyBatis历史MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了 1.2 MyBatis特性MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集MyBatis可以使用简单的 ,则去镜像网站中下载没有,则去中央仓库中下载本人其他相关文章链接1.一、MyBatis简介:MyBatis历史、MyBatis特性、和其它持久化层技术对比、Mybatis下载依赖包流程2.二、搭建MyBatis 采用xml方式,验证CRUD(增删改查操作)3.三、MyBatis核心配置文件详解4.四、MyBatis获取参数值的两种方式(重点)5.五、MyBatis的增删改查模板(参数形式包括:String、对象 )9.九、MyBatis动态SQL10.十、MyBatis的缓存11.十一、MyBatis的逆向工程12.十二、MyBatis分页插件
'student2',2); INSERT INTO card VALUES (1,1111); INSERT INTO card VALUES (2,2222); 注意: 这里并没有在数据库中设置外键 'student2'); INSERT INTO class VALUES (1,'Java课',1); INSERT INTO class VALUES (2,'Java课',2); 其中 class VALUES(2,1); INSERT INTO student_select_course VALUES(2,2); 根据要求我们来设计一下 SQL 语言: SELECT s.student_id 二级缓存示例 我们在同一个 SessionFactory 下查询 id = 1 的数据,只有第一次需要执行 SQL 语句,从后都是从缓存中取出来的: 参考资料:how2j.cn-MyBatis教程、Java3y-Mybatis 【缓存、代理、逆向工程】 参考资料: 《Java EE 互联网轻量级框架整合开发》 《Spring MVC + MyBatis开发从入门到项目实战》 How2j-MyBatis 系列教程 全能的百度和万能的大脑
一、Mybatis的Dao层实现 1.1 代理开发方式介绍 Mapper 接口开发需要遵循以下规范: 1、 Mapper.xml文件中的namespace与mapper接口的全限定名相同 2、 Mapper select>查询 <insert>:插入 <update>:修改 <delete>:删除 <where>:where条件 <if>:if判断 <foreach>:循环 <sql>:sql片段抽取 四、Mybatis 个未实现的方法,其中setNonNullParameter为java程序设置数据到数据库的回调方法,getNullableResult为查询时 mysql的字符串类型转换成 java的Type类型的方法 ③在MyBatis 核心配置文件中进行注册 ④测试转换是否正确 1.2 plugins标签 MyBatis可以使用第三方的插件来对功能进行扩展,分页助手PageHelper是将分页的复杂操作进行封装,使用简单的方式即可获得分页的相关数据 groupId> <artifactId>jsqlparser</artifactId> <version>1.0</version> </dependency> ②在mybatis
; /* 子流程1: SQL查询参数的设置 */ stmt = prepareStatement(handler, ms.getStatementLog()); /* 子流程2: Cause: " + e, e); } } } } } 复制代码 子流程2 SQL查询结果集的封装: 复制代码 // SimpleExecutor类 public List query 最后贴一张调用栈到达Java类的set方法中的快照: MyBatis缓存 MyBatis提供查询缓存,用于减轻数据库压力,提高性能。MyBatis提供了一级缓存和二级缓存。 同一个SqlSession对象对象执行2遍相同的SQL查询,在第一次查询执行完毕后将结果缓存起来,这样第二遍查询就不用向数据库查询了,直接返回缓存结果即可。MyBatis默认是开启一级缓存的。 MyBatis的二级缓存对细粒度的数据级别的缓存实现不友好,比如如下需求:对商品信息进行缓存,由于商品信息查询访问量大,但是要求用户每次都能查询最新的商品信息,此时如果使用mybatis的二级缓存就无法实现当一个商品变化时只刷新该商品的缓存信息而不刷新其它商品的信息
MySQL 5版本使用jdbc5驱动,驱动类使用:com.mysql.jdbc.Driver MySQL 8版本使用jdbc8驱动,驱动类使用:com.mysql.cj.jdbc.Driver 2、 核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息 核心配置文件存放的位置是src/main/resources目录下 创建mapper接口 MyBatis中的mapper 因此一个映射文件对应一个实体类,对应一张表的操作 MyBatis映射文件用于编写SQL,访问以及操作表中的数据 MyBatis映射文件存放的位置是src/main/resources/mappers 目录下 2、 MyBatis中可以面向接口操作数据,要保证两个一致: a>mapper接口的全类名和映射文件的命名空间(namespace)保持一致 b>mapper接口中方法的方法名和映射文件中编写 //读取MyBatis的核心配置文件 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); //创建SqlSessionFactoryBuilder
result column = "password" property = "user.password"></result> </resultMap> <resultMap id = "orderMap<em>2</em>"
SqlSessionFactoryBuilder入手, 咱们先看看源码是怎么实现的: SqlSessionFactoryBuilder源码片段: 1 public class SqlSessionFactoryBuilder { 2 3 //Reader读取mybatis配置文件,传入构造方法 4 //除了Reader外,其实还有对应的inputStream作为参数的构造方法, 5 //这也体现了mybatis properties和environments的解析: XMLConfigBuilder: 1 public class XMLConfigBuilder extends BaseBuilder { 2 通过以上源码,我们就能看出,在mybatis的配置文件中: 1. configuration节点为根节点。 2. DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis
; Mapper.xml <select id="getUserByList" parameterType="map" resultMap="user"> select * from mybatis.user Integer> map = new HashMap<String, Integer>; map.put("startIndex",1); map.put("pageSize",2)
Mybatis学习笔记2 本章目录描述: 1、Dao开发方法 1.1需求 1.2SqlSession的使用范围 1.3原始Dao开发方式 1.4 Mapper动态代理方式 2、SqlMapConfig.xml null; try { //通过sqlsession调用selectOne方法获取一条结果集 //参数1:指定定义的statement的id,参数2: 2、 Mapper接口方法名和Mapper.xml中定义的每个statement的id相同 3、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType void insertUser(User user)throws Exception; } 接口定义有如下特点: 1、 Mapper接口方法名和Mapper.xml中定义的statement的id相同 2、 2 SqlMapConfig.xml配置文件 2.1配置内容 SqlMapConfig.xml中配置的内容和顺序如下: properties(属性) settings(全局配置参数) typeAliases
, 9 9月 2021 作者 847954981@qq.com 后端学习, 我的编程之路 MyBatis基础2(XML) XML模式开发顺序: 创建DO对象 创建DAO对象,配置@Mapper注解 创建XML文件,并完成resultMap配置 创建对应的XML语句 在MyBatis中使用XML首先需要在 application.properties 文件中添加配置。 DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3- [CDATA[ >= ]]> #{time} </if> </select> 这里 >=、<、<=、>、&、| 这类表达式会导致MyBatis解析失败,所以我们需要使用 <! ,now(),now()) MyBatis会自动优化最后一个逗号,确保SQL正确。
MyBatis之xml 配置版 1 MyBatis 介绍 MyBatis 是一款标准的 ORM 框架,被广泛的应用于各企业开发中。 2 MyBatis 引入与配置 2.1 pom.xml依赖 首先在pom文件中添加依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId 中配置 MyBatis 基础属性; mybatis.mapper-locations:配置 Mapper 对应的 XML 文件路径; mybatis.type-aliases-package:配置项目中实体类包路径 3.3 mapper编写与调用 3.3.1 查询示例 1、指明对应文件的 Mapper 类地址: <mapper namespace="com.example.demo.dao.UserMapper"> 2、 DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-
2.
前言 上一篇文章中我们讲了什么是持久化以及 Mybatis 的相关简介,今天就来看看如何创建一个 Mybatis 入门实例以及如何利用 Mybatis 进行 CRUD。 PRIMARY KEY (id) ); 向数据库中插入数据 INSERT INTO user (id, name, password) VALUES (1, '村雨遥', '123456'),(2, 实例 编写 MyBatis 核心配置文件,在 main/resources 文件下新建 mybatis-config.xml ,配置数据库; <? DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis SQL 语句 UserDao mapper = sqlSession.getMapper(UserDao.class); User user = mapper.getUserById(2)
2. 创建Maven项目 2.设置 Maven 的相关依赖 <! 在resources下创建一个名为log4j.properties #2. 可以在Mybatis官网入门中找到配置模板 http://www.mybatis.org/mybatis-3/zh/getting-started.html # 2. 在com.lijw.dao包下创建一个接口,名为UserMapper # 2.
一、Mybatis的多对多操作 例: 一个用户可以有多个角色 一个角色可以赋予多个用户 方法: 1、建立两张表:用户表,角色表 让用户表和角色表具有多对多的关系。 2、建立两个实体类:用户实体类和角色实体类 让用户和角色的实体类能体现出来多对多的关系 各自包含对方一个集合引用 //role角色表 private Integer roleId;
--mybatis核心依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> < (使用mybatis的类库,编写mybatis程序,连接数据库,做增删改查就行了。) 在MyBatis当中,负责执行SQL语句的那个对象叫做什么呢? 已经验证了: mybatis核心配置文件的名字,不一定是:mybatis-config.xml。可以是其它名字。 mybatis核心配置文件存放的路径,也不一定是在类的根路径下。可以放到其它位置。 2. LOG4J LOG4J2 STDOUT_LOGGING ....... 注意:log4j log4j2 logback都是同一个作者开发的。
SqlSession可以说是整个MyBatis的重中之重,在SqlSession中涉及到前一篇四大对象:Executor、StatementHandler、ParameterHandler、ResultHandler 在SqlSession接口中提供了很多方法,用于我们的增删改查,这在旧版的MyBatis或者iBatis中常常所使用的,我们现在大多直接使用xml配置文件以达到更加灵活的效果。 1 //org.apache.ibatis.binding.MapperRegistry 2 public <T> T getMapper(Class<T> type, SqlSession sqlSession 使用MyBatis的第一步是配置mybatis-config.xml,配置好过后,mybatis-config跑起来的第一步也一定是首先解析xml配置文件,将解析好的配置文件各个配置参数放入Configuration MapperProxy是一个重要的类,所以我们将其代码全部贴出: 1 //org.apache.ibatis.binding.MapperProxy 2 public class MapperProxy
userSex; //account表 private Integer id; private Integer uid; private Double money; //多对一(mybatis 中多对一视为为一对一)的映射:一个账户只能属于一个用户 包含一个user类型的引用 private User user; 2.dao层接口编写 /** * 查询所有用户 * } public void setAccounts(List<Account> accounts) { this.accounts = accounts; } 2.
作者 | 小匠 来源 | 码匠笔记 导读:如何快速集成 Flyway,MyBatis,MyBatis-Generator,H2? 这一讲涉及的服务端知识比较多,比如 Flyway、 H2、 MyBatis、 MyBatisGenerator等使用。 登录优化 1,把获取 code 的逻辑放到 app.js。 H2 H2是一个超轻量级的数据库,引入一个 1.5M 的 jar 就可以运行使用,同时支持 JDBC,内嵌,内存和服务三种模式,这样引入 H2 以后我们就可以方便的在本地调试项目了。 MyBatis MyBatis 就不用详细讲解了,目前比较成熟的数据库框架,我们直接讲解配置,小编使用了 druid 连接池。 重点讲解一下 classPathEntry 需要指定一下你当前使用的 h2.jar 的存放位置。 jdbcConnection 和上文中我们配置的 h2 的地址一致。