目录
一.了解mybatis!
A.什么是mybatis?
B.MyBatis这款框架的一些特点
SQL与Java代码解耦:
灵活的SQL查询
对象-关系映射
缓存机制
注解支持
插件扩展
C.Mybatis框架的一些应用场景
C1.Web应用开发:
C2.微服务架构
C3.数据处理和ETL
C4.批处理应用
C5.数据库工具和管理系统
C6.总结
D.学习MyBatis重要动力!
提高数据库访问效率
简化数据访问层的开发
灵活的动态SQL查询
对象-关系映射(ORM)支持
与其他框架的集成
二.将My'batis部署在IDEA 中,并且实施增删修查!
A.Mybatis配置环境
A1.导入依赖
B.加载数据库配置文件
C.修改web.xml版本
D.下载插件
配置:mybatis.cfg.xml,generatorConfig.xml,
F.运行结果
G.测试方法
MyBatis是一个开源的持久层框架,它简化了在Java应用程序中使用关系型数据库的开发工作。MyBatis提供了将SQL语句和Java代码进行解耦的能力,使得应用程序可以通过简单的配置来访问数据库,并实现了对SQL查询、插入、更新和删除等操作的支持。
MyBatis使用XML或注解来定义SQL映射关系,将SQL语句与Java代码进行解耦。这样,开发人员无需编写大量的JDBC代码,可以集中精力于业务逻辑的实现。
MyBatis支持灵活的动态SQL查询,可以根据不同的条件动态构建SQL语句,并且提供了强大的SQL语句处理能力,如条件判断、循环等。这样可以方便地编写复杂的查询语句。
MyBatis提供了通过对象-关系映射(ORM)将查询结果映射为Java对象的能力。开发人员可以通过配置简单的映射规则,将数据库表的数据映射到相应的Java对象中,简化了数据的获取和处理过程。
MyBatis支持一级缓存和二级缓存机制,提高了数据库访问性能。一级缓存是SqlSession级别的缓存,可以减少对数据库的重复查询;二级缓存是全局级别的缓存,多个SqlSession之间可以共享缓存数据。
除了使用XML配置SQL映射外,MyBatis还支持使用注解来编写和配置SQL语句。使用注解可以使得SQL语句与Java代码更加紧密,提高了开发效率。
MyBatis提供了丰富的插件扩展机制,允许开发人员自定义插件来增强或修改MyBatis的行为。插件可以在SQL执行前后、参数处理前后等不同阶段进行拦截和干预。
总结来说,MyBatis是一个轻量级的持久层框架,通过XML配置或注解来定义SQL映射关系,并提供了灵活的动态SQL查询、对象-关系映射等功能,使得开发人员可以更方便地操作数据库。同时,MyBatis还具有缓存机制、注解支持和插件扩展等特性,进一步提升了开发效率和可扩展性。
MyBatis在如今的Java开发中广泛应用于以下几个方面:
MyBatis可以与各种主流的Java Web框架(如Spring MVC、Spring Boot、Struts等)结合使用,用于处理Web应用程序中的持久层数据访问。通过定义SQL映射关系,可以方便地进行数据库的查询、插入、更新和删除等操作。
随着微服务架构的兴起,许多企业开始将大型应用拆分为一组独立的微服务。在每个微服务中,MyBatis可以作为持久层框架用于处理数据访问。通过MyBatis提供的灵活的SQL查询和对象-关系映射功能,可以方便地对微服务的数据库进行操作。
MyBatis可以作为一个轻量级的数据处理工具,用于执行批量数据处理和Extract-Transform-Load (ETL) 操作。通过编写简单的SQL语句,并结合MyBatis提供的批量操作和动态SQL功能,可以高效地处理大量的数据。
在后台批处理应用中,MyBatis可以用于执行复杂的数据查询和更新操作。通过MyBatis的一级缓存和二级缓存机制,可以提高批处理应用的性能,并有效地管理数据库连接和事务。
MyBatis提供了用于管理和操作数据库的工具和接口,可以方便地进行数据访问和管理。开发人员可以使用MyBatis的API和工具来执行各种数据库操作,如数据导入、数据备份、数据迁移等。
总而言之,MyBatis在如今的Java开发中被广泛应用于Web应用开发、微服务架构、数据处理和ETL、批处理应用以及数据库工具和管理系统等领域。它提供了简单且灵活的方式来处理数据访问,并且与其他主流的Java框架和技术集成良好。
MyBatis可以帮助你优化数据库访问性能。它通过提供一级缓存和二级缓存机制来减少对数据库的频繁查询,提高了系统的响应速度和整体性能。学习MyBatis可以帮助你学会如何正确地使用缓存机制,从而提高数据库查询效率。
MyBatis通过将SQL语句与Java代码进行解耦,使得数据访问层的开发更加简单和易于维护。学习MyBatis可以帮助你理解如何使用XML或注解来定义SQL映射关系,以及如何执行各种数据库操作(如查询、插入、更新和删除)。这将大大减少编写繁琐的JDBC代码的工作量。
MyBatis提供了灵活的动态SQL查询功能,可以根据不同的条件动态构建SQL语句。这使得你能够根据具体业务需求编写复杂的查询语句,而无需额外的复杂逻辑。学习MyBatis可以帮助你掌握动态SQL的使用方法,提高查询的灵活性和可扩展性。
MyBatis支持将查询结果映射为Java对象,简化了数据的获取和处理过程。通过学习MyBatis,你可以了解如何使用对象-关系映射(ORM)来将数据库表的数据映射到Java对象中,从而方便地操作数据。
MyBatis与其他主流的Java框架(如Spring、Spring Boot等)集成良好。学习MyBatis可以帮助你了解如何将MyBatis与这些框架结合使用,以实现更完整的应用程序开发。
综上所述,学习MyBatis能够提高数据库访问效率,简化数据访问层的开发,实现灵活的动态SQL查询,支持对象-关系映射(ORM),以及与其他框架的集成。这些都是在日常Java开发中非常有价值的技能。无论是从事Web开发、微服务架构还是其他与数据库相关的工作,学习MyBatis都会对你的开发技能和职业发展有积极的影响。
直接替换pom的xml文件的内容
1.8
1.8
junit
junit
4.12
test
javax.servlet
javax.servlet-api
4.0.0
provided
org.mybatis
mybatis
3.4.5
mysql
mysql-connector-java
5.1.44
org.apache.logging.log4j
log4j-core
2.9.1
org.apache.logging.log4j
log4j-api
2.9.1
org.apache.logging.log4j
log4j-web
2.9.1
这段配置文件配置在 file-Name后面
src/main/java
**/*.xml
src/main/resources
jdbc.properties
*.xml
导入插件
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2
mysql
mysql-connector-java
5.1.44
true
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8
jdbc.username=数据库名字
jdbc.password=数据库密码
Free mybatis plugin
Mybatis generator
mybatis tools
maven helper
以上四个,用于mybatis开发的插件
?xml version="1.0" encoding="UTF-8"?>
自动生成代码,和实现方法
package com.lz.demo;
import com.lz.biz.BookBiz;
import com.lz.biz.impl.BookBizImpl;
import com.lz.mapper.BookMapper;
import com.lz.model.Book;
import com.lz.utils.SessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* @author lz
* @create 2023-08-20 22:56
*/
public class demo1 {
private SqlSession sqlSession;
private BookBiz bookBiz;
@Before
public void a(){
System.out.println("刘兵是傻逼");
sqlSession= SessionUtil.openSession();
BookBiz bookBiz = new BookBizImpl();
BookMapper mapper = sqlSession.getMapper(BookMapper.class);
((BookBizImpl) bookBiz).setBookMapper(mapper);
this.bookBiz=bookBiz;
}
@After
public void b(){
System.out.println("刘兵不是傻逼");
}
@Test
public void test1(){
System.out.println("测试方法");
Book book = bookBiz.selectByPrimaryKey(25);
System.out.println(book);
}
@Test
public void test2(){
int i = bookBiz.deleteByPrimaryKey(25);
}
}