![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MyBatis
文章平均质量分 60
CodeWhisperer001
能用一行代码解决的问题,绝不写两行(即使阅读难度提升十倍)。
展开
-
9_MyBatis注解开发
1.使用注解没有实现Java代码和SQL语句的解耦。3.进行多表的查询时定制ResultMap比较麻烦。2.无法实现SQL语句的动态拼接。注解和XML的优缺点。原创 2023-02-25 13:01:19 · 44 阅读 · 0 评论 -
11_逆向工程
MyBatis的一个主要的特点就是需要程序员自己编写SQL,那么如果表太多的话,难免会很麻烦,所以MyBatis官方提供了一个逆向工程,可以针对单表自动生成MyBatis执行所需要的代码(包括mapper.xml,mapper.java,pojo)。配置逆向工程配置文件 在resources目录下放置一个名为generatorConfig.xml的配置文件,文件内容如下。生成的实体类和Mapper接口和Mapper映射文件,包含了基本的CURD功能,哪里需要文件就放哪里。原创 2023-02-25 10:38:39 · 237 阅读 · 0 评论 -
6_代理模式下开发各种功能-1_多种参数传递问题
4map集合数据类型。mapper映射文件。原创 2023-02-25 10:35:04 · 50 阅读 · 0 评论 -
1_log4j1和log4j2的简单配置
将log4j.properties文件负责到src下。另外在其中可以将全局的日志级别调高,避免大量debug信息的干扰。同时将对映射文件的操作调低,可以用来显示SQL语句的调试信息。开发阶段,建议启动控制的日志。在mybatis.cfg.xml中配置MyBatis所使用的具体日志实现。可能会搜到log4j,但是如果优先搜到了其他的日志实现呢,所以还是设置为好。将log4j2.xml文件负责到resources下。在核心配置文件中可以选择的其他日志处理方式。核心配置文件中可以指定日志打印方式。原创 2023-02-25 10:30:53 · 98 阅读 · 0 评论 -
MyBatis 优秀的轻量级持久层框架从入门到应用实战
学习过JDBC的同学都会有所感受,原生JDBC技术实现对持久层数据操作有着诸多问题.1 编码繁琐,步骤多2 手动处理结果集和实体类映射关系比较麻烦,尤其是多表查询3 没有较好的性能优化手段. 如连接池,缓存,延迟加载等等4 没有现成的增删改查方法的封装,需要我们自己借助反射和反省等进行封装5 SQL语句以字符串形式存在于JAVA代码之中, SQL语句和JAVA代码的耦合度太高6 手动控制事务处理,容易出错7 操作不同的关系型数据库编码有差异,需要比较细致的修改... ...原创 2023-02-25 10:20:14 · 87 阅读 · 0 评论 -
8_MyBatis实现多表查询-4_多对多关联查询
根据项目编号查询项目信息,以及参与到该项目之中的所有的员工信息。原创 2022-12-19 15:48:36 · 101 阅读 · 0 评论 -
8_MyBatis实现多表查询-3_一对多关联查询
根据部门号查询部门信息及该部门的所有员工信息。原创 2022-12-19 15:46:39 · 126 阅读 · 0 评论 -
8_MyBatis实现多表查询
前面已经使用MyBatis完成了对Emp表的CRUD操作,不管是使用SqlSession直接操作,还是使用Mapper代理方式,都只是完成了对单个数据库表的操作。这肯定是远远不够的。在实际开发中,经常会将来自多张表的数据在一个位置显示。比如查询并显示的员工信息中会有来自部门表、岗位表的数据,而后台一般是定义一个方法。需求:根据编号查询员工信息及所在的部门信息。数据准备: 创建项目表和项目记录表。实体类添加一个部门作为属性。1_手动处理映射关系。原创 2022-12-19 15:44:25 · 134 阅读 · 0 评论 -
9_MyBatis注解开发
1.使用注解没有实现Java代码和SQL语句的解耦。3.进行多表的查询时定制ResultMap比较麻烦。2.无法实现SQL语句的动态拼接。注解和XML的优缺点。原创 2022-12-19 15:41:06 · 60 阅读 · 0 评论 -
10_缓存-3_三方缓存
分布式缓存框架:我们系统为了提高系统并发和性能,一般对系统进行分布式部署(集群部署方式)不适用分布缓存, 缓存的数据在各个服务单独存储,不方便系统开发。仅当element不是永久有效时使用,默认是0.,也就是element存活时间无穷大。仅当element不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。· overflowToDisk:配置此属性,当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中。原创 2022-12-19 15:39:06 · 77 阅读 · 0 评论 -
10_缓存-2_二级缓存
下面的代码中创建了两个SqlSession,执行相同的SQL语句,尝试让第二个SqlSession使用第一个SqlSession查询后缓存的数据。注意其中的commit(),执行该命令后才会将该SqlSession的查询结果从一级缓存中放入二级缓存,供其他SqlSession使用。经过设置后,查询结果如图所示。3) 加入Cache元素后,会对相应命名空间所有的select元素查询结果进行缓存,而其中的insert、update、delete在操作是会清空整个namespace的缓存。原创 2022-12-19 15:38:10 · 417 阅读 · 0 评论 -
10_缓存-1_一级缓存
mybatis的缓存将相同查询条件的SQL语句执行一遍后所得到的结果存在内存或者某种缓存介质当中,当下次遇到一模一样的查询SQL时候不在执行SQL与数据库交互,而是直接从缓存中获取结果,减少服务器的压力;尤其是在查询越多、缓存命中率越高的情况下,使用缓存对性能的提高更明显。一级存储是SqlSession上的缓存,二级缓存是在SqlSessionFactory(namespace)上的缓存。MyBatis允许使用缓存,缓存一般放置在高速读/写的存储器上,比如服务器的内存,能够有效的提供系统性能。原创 2022-12-19 15:34:50 · 69 阅读 · 0 评论 -
11_逆向工程
- enableSubPackages:是否让schema作为包的后缀 -->-- enableSubPackages:是否让schema作为包的后缀 -->-- enableSubPackages:是否让schema作为包的后缀 -->-- targetProject:mapper映射文件生成的位置 -->-- targetPackage:mapper接口生成的位置 -->-- targetProject:生成PO类的位置 -->-- 从数据库返回的值被清理前后的空格 -->-- 指定数据库表 -->原创 2022-12-19 15:32:02 · 505 阅读 · 0 评论 -
12_main目录下配置文件打包问题
-告诉maven将项目源码中的xml文件也进行编译,并放到编译目录中-->原创 2022-12-19 15:30:03 · 365 阅读 · 0 评论 -
6_代理模式下开发各种功能-4_实现DML操作
@param emp 存储新增员工信息的Emp对象。* @param ename 修改之后的新的员工名字。* @return 对数据库数据产生影响的行数。* @param empno 要修改的员工编号。* @return 对数据库数据产生影响的行数。* @param empno 要删除的员工编号。* @return 对数据库数据产生影响的行数。// 关闭SQLSession。* 根据员工编号修改员工姓名的方法。* 根据员工编号删除员工信息。EmpMapper映射 文件。EmpMapper接口。原创 2022-12-17 20:39:11 · 517 阅读 · 0 评论 -
6_代理模式下开发各种功能-3_主键自增回填
有时候完成添加后需要立刻获取刚刚自增的主键,由下一个操作来使用。比如结算构造车后,主订单的主键确定后,需要作为后续订单明细项的外键存在。如何拿到主键呢,MyBatis提供了支持,可以非常简单的获取。以添加Dept对象为例,添加前Dept对象的deptno是空的,添加完毕后可以通过getDeptno() 获取自增的主键。 主键自定义,用户通过UUID或时间戳等方式生成唯一主键,把这个值当做主键值。keyProperty:表示把自增的主键赋给JavaBean的哪个成员变量。mapper映射文件。原创 2022-12-17 20:37:44 · 531 阅读 · 0 评论 -
6_代理模式下开发各种功能-2_模糊查询功能
在进行模糊查询时,在映射文件中可以使用concat()函数来连接参数和通配符。另外注意对于特殊字符,比如原创 2022-12-17 20:36:22 · 60 阅读 · 0 评论 -
6_代理模式下开发各种功能-1_多种参数传递问题
如果用@Param定义了别名,那么就不能使用arg*.属性名,但是可以使用param*.属性名和别名.属性名。通过@Param注解使用别名之后,就不能再使用arg* 但是可以继续使用param** @return 全部员工信息封装的Emp对象的List集合。--单个引用类型,{}中写的使用对象的属性名-->* @return 多个Emp对象的List集合。* 帮助我们生成一个接口下的实现类对象的。// 1单个基本数据类型作为方法参数。* 根据员工编号查询单个员工信息的方法。原创 2022-12-17 20:35:13 · 524 阅读 · 0 评论 -
5_MyBatis代理模式开发-1_使用Mapper代理方式实现查询
下面我们就是要Mapper代理的方式来实现对Emp表的CRUD操作吧,还有完成多个参数传递、模糊查询、自增主键回填等更多的技能实现。所以在MyBatis中不需要显式提供Mapper接口的实现类,这也是简单的地方。前面已经使用MyBatis完成了对Emp表的CRUD操作,都是由SqlSession调用自身方法发送SQL命令并得到结果的,实现了MyBatis的入门。3. 只提供了映射文件,没有提供数据库操作的接口,不利于后期的维护扩展。2 Mapper映射文件的namespace必须是接口的全路径名。原创 2022-12-17 20:15:58 · 590 阅读 · 0 评论 -
1_MyBatis入门-3_认识MyBatis
MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。MyBatis 本是Apache的一个开源项目iBatis, 2010年这个项目由Apache Software Foundation 迁移到了Google Code,且改名为MyBatis。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。原创 2022-12-17 20:14:04 · 61 阅读 · 0 评论 -
1_MyBatis入门-2_认识ORM
ORM,Object-Relationl Mapping,对象关系映射,它的作用是在关系型数据库和对象之间作一个映射,这样我们在具体的操作数据库的时候,只要像平时操作对象一样操作它就可以了,ORM框架会根据映射完成对数据库的操作,就不需要再去和复杂的SQL语句打交道了。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。DBC的缺点:需要手动的完成面向对象的Java语言、面向关系的数据库之间数据的转换,代码繁琐无技术含量,影响了开发效率。原创 2022-12-17 20:12:12 · 106 阅读 · 0 评论 -
1_MyBatis入门-1_认识框架
框架( Framework )对于java来说,就是一系列为了解决特定问题而定义的一系列接口和实现类,在组织框架代码时,使用了一系列优秀的设计模式,使代码无论在性能上还是API操作上得到很大提升.框架可以看做是项目开发的半成品,基本的底层操作已经封装完毕,通过框架,程序员可以从底层代码中解脱出来,专注于业务逻辑的完成和性能的优化。总之,框架是一个半成品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的API可以省去很多代码编写,从而提高工作效率和开发速度。原创 2022-12-17 20:10:44 · 243 阅读 · 0 评论 -
MyBatis
原生JDBC技术实现对持久层数据操作有着诸多问题.1 编码繁琐,步骤多2 手动处理结果集和实体类映射关系比较麻烦,尤其是多表查询3 没有较好的性能优化手段. 如连接池,缓存,延迟加载等等4 没有现成的增删改查方法的封装,需要我们自己借助反射和反省等进行封装5 SQL语句以字符串形式存在于JAVA代码之中, SQL语句和JAVA代码的耦合度太高6 手动控制事务处理,容易出错7 操作不同的关系型数据库编码有差异,需要比较细致的修改。原创 2022-12-15 22:53:18 · 385 阅读 · 0 评论 -
1_SpringMVC_概述,2_SpringMVC_项目搭建
-配置dispatcherServlet的映射路径为 / 包含全部的servlet, JSP除外-->--配置初始化参数,读取springMVC的核心配置文件的位置和名称-->默认配置文件名为:-servlet.xml。--配置DispatcherServlet -->--Apache Commons日志包-->--spring test测试支持包-->--jsp 和Servlet 可选-->--spring orm 映射依赖-->原创 2022-11-28 08:56:37 · 226 阅读 · 0 评论 -
4_MyBatis传统DAO模式开发
普通模式,也称为传统DAO模式,就是在传统DAO模式下,定义接口和实现类,如 interface EmpDao class EmpDaoImpl implements EmpDao. 在实现类中,用SQLSession对象调用select insert delete update 等方法实现.目前极为少见.在传统模式下,我们需要知道SqlSession对象 实现CURD和 参数传递的处理。在SQL语句上可以使用${} #{} 代表参数的占位。参数是我们自定义的类型,那么 #{}中写的是参数的属性名。原创 2022-11-28 00:02:10 · 146 阅读 · 0 评论 -
3_MyBatis配置详解
然而一些容器并不希望这样, 因此如果你需要从连接中停止它,将closeConnection 属性设置为 false. mybatis本身并不做事务的处理,交给其他框架去处理事务,如spring。另外在其中可以将全局的日志级别调高,避免大量debug信息的干扰。同时将对映射文件的操作调低,可以用来显示SQL语句的调试信息。3.接口的全限定名导入 使用的是mapper标签的class属性 (基于接口的代理模式开发)1.mapper映射文件的文件路径导入 使用的mapper标签的resource属性。原创 2022-11-28 00:00:04 · 433 阅读 · 0 评论 -
2_准备数据库_包结构和实体类
resources目录下 创建 com/msb/mapper目录,然后添加DeptMapper.xml映射文件。resources目录下准备sqlMapConfig.xml 核心配置文件。--加载mapper映射文件-->// 关闭SQLSession。3_准备Mapper映射文件和核心配置文件。// 调用SQL语句。在test目录下开发测试代码并运行。原创 2022-11-27 23:57:04 · 65 阅读 · 0 评论 -
2_MyBatis初次使用
MyBatis官网说明文档 https://mybatis.org/mybatis-3/zh/index.html。这里不显示项目名 没关系,如果想看到项目名,可以close项目后,再次open即可。接下来设置maven为我们自己安装的,不用idea自带的(当然用自带的也行)--mybatis 核心jar包-->先创建一个空项目,用于存放后面Mybatis相关项目模块。检查项目目前在磁盘上的存放路径 然后next。导入lombok依赖后,单独设置启用注解处理。1_创建maven项目导入相关依赖。原创 2022-11-27 23:54:14 · 79 阅读 · 0 评论 -
1_MyBatis入门
ORM,Object-Relationl Mapping,对象关系映射,它的作用是在关系型数据库和对象之间作一个映射,这样我们在具体的操作数据库的时候,只要像平时操作对象一样操作它就可以了,ORM框架会根据映射完成对数据库的操作,就不需要再去和复杂的SQL语句打交道了。好比和世界上最优秀的软件工程师是一个项目的,并且他们完成的还是基础、全局的工作。总之,框架是一个半成品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的API可以省去很多代码编写,从而提高工作效率和开发速度。原创 2022-11-27 23:49:43 · 436 阅读 · 0 评论