目录
前言
一、Mybatis介绍
1. Mybatis是什么
2. Mybatis的核心思想
核心思想的表现
3. Mybatis的特点
二、搭建Mybatis框架环境
1. 创建maven工程(步骤如下图所示)
2. 导入相关pom依赖(pom.xml)
3. 数据库连接配置(Jdbc.properties)
4. 修改web.xml文件代码
5. 安装Mybatis相关插件
5.1 插件的相关简介
5.2 插件的安装
Free mybatis plugin
MyBatis Generator
MyBatis Tools
Maven Helper
6. 代码生成器的配置(generatorConfig.xml)
7. 利用代码生成器生成对应的代码
三、Mybatis测试增删改查功能。
1. 编写业务层代码
BookBiz接口代码
BookBizImpl实现类代码
实体类Book.java
2. 数据库工具类
SessionUtil
mybatis.cfg.xml文件配置
测试类Demo代码
Demo01代码
测试结果
查看
删除
新增
修改
大家好,今天给大家带来一期有关Mybatis的博客分享,希望能给老铁们带来帮助和收获,也希望老铁们可以支持鼓励我。
MyBatis(前身为ibatis)是一种Java持久化框架,用于将数据库的操作和Java对象之间的映射关系进行管理。它提供了一种简单且灵活的方式来处理数据库的访问,使开发人员能够通过编写XML配置文件或注解来定义SQL语句,并将其与Java方法进行绑定。
MyBatis的核心思想是将数据访问逻辑从业务逻辑中分离出来,通过配置文件或注解来定义SQL语句,并将其与Java对象进行映射。开发人员可以使用简单的CRUD操作来访问数据库,同时还可以使用复杂的SQL查询和存储过程。
核心思想的体现 | 说明 |
SQL与Java对象的分离 | MyBatis将SQL语句与Java对象之间的映射关系进行了分离。开发人员可以通过配置文件或注解来定义SQL语句,而不需要将SQL语句直接写在Java代码中。这种分离的设计使得SQL语句可以独立于Java代码进行维护和修改,提高了代码的可维护性和可读性。 |
灵活的SQL编写 | MyBatis允许开发人员使用原生的SQL语句,可以根据具体的业务需求编写复杂的SQL查询和操作。开发人员可以充分利用数据库的特性和优化技巧,编写高效的SQL语句,从而提高数据库访问的性能。 |
映射配置 | MyBatis提供了强大的对象关系映射(ORM)功能,可以将查询结果自动映射到Java对象中。开发人员可以通过配置文件或注解来定义Java对象与数据库表之间的映射关系,从而简化了数据的处理和转换过程。 |
缓存机制 | MyBatis提供了缓存机制,可以在内存中缓存查询的结果集。通过合理配置缓存策略,可以减少对数据库的访问,提高查询的性能。缓存机制可以在一定程度上解决频繁查询相同数据的性能问题。 |
- 灵活性:可以通过配置文件或注解来定义SQL语句,灵活地编写自己的SQL查询。
- 方便开发人员使用:MyBatis提供了简洁的API,使开发人员能够轻松地执行数据库操作。
- 易于集成(兼容性好):MyBatis可以与各种第三方框架(如Spring)进行无缝集成。
- 性能优化:MyBatis提供了缓存机制和批量操作等功能,可以提高数据库访问的性能。
项目创建成功标识
4.0.0 com.yx yx_mybatis01 1.0-SNAPSHOT war yx_mybatis01 Maven Webapp http://www.example.com 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 yx_mybatis01 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 maven-clean-plugin 3.1.0 maven-resources-plugin 3.0.2 maven-compiler-plugin 3.8.0 maven-surefire-plugin 2.22.1 maven-war-plugin 3.2.2 maven-install-plugin 2.5.2 maven-deploy-plugin 2.8.2 这就是利用pom.xml文件导入Mybatis依赖以及下载Mybatis的一些插件。
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis_ssm?useUnicode=true&characterEncoding=UTF-8 jdbc.username=mybatis_ssm jdbc.password=muyi
其中的jdbc.username和jdbc.password是要根据自身的数据库连接的账号和密码来设置的,以上的只是案例演示而已。
将web.xml的版本修改为3.1的版本。
插件 | 说明 |
Free mybatis plugin |
它为MyBatis框架提供了额外的功能和扩展。Free MyBatis Plugin可以帮助简化MyBatis的使用,并提供了一些有用的功能,如自动生成代码、动态SQL查询、分页查询等。它还支持与Spring框架的集成,使得在Spring应用中使用MyBatis更加方便。 |
MyBatis Generator | MyBatis Generator是一个用于自动生成Java代码的工具,特别是用于生成与MyBatis框架集成的代码。它可以根据数据库表结构自动生成实体类、Mapper接口和XML映射文件,从而减少手动编写重复代码的工作量,提高开发效率。也可以根据配置文件中的设置,自定义生成的代码的结构和内容,以满足项目的需求。并且它支持多种数据库,包括MySQL、Oracle、SQL Server等。 |
MyBatis Tools | 是一个用于辅助开发和提高开发效率的工具集合。它包括了一些常用的插件和工具,可以与MyBatis框架一起使用。 |
Maven Helper | 是一个用于辅助使用Maven构建工具的插件。Maven是一个流行的项目管理和构建工具,用于自动化构建、依赖管理和项目部署等任务。 |
Free mybatis plugin
如下图操作所示,如果未能找到一模一样的插件,就安装MyBatisX然后重启Idea即可使用。
MyBatis Generator
MyBatis Tools
Maven Helper
- 将
的路径改为mysql-connector-java-5.1.44.jar本地下载好的路径,记得复制之后的路径别忘了有两个反斜杠的。 中的targetPackage是指定sql映射文件生成的位置,可以根据自身的需求进行修改。
中的targetPackage是指定生成的model生成所在的包名,可以根据自身的需求进行修改。
是指生成XxxMapper接口的位置路径,可以根据自身的需求进行修改。 这是配置表的信息,其中schema即为数据库名、tableName为对应的数据库表、domainObjectName是要生成的实体类等等,当然配置表可设置多个也就是意味着可生成多个对应的实体类以及方法接口类。可以根据自身的需求更改对应的数据库名及数据库表名。
7. 利用代码生成器生成对应的代码
三、Mybatis测试增删改查功能。
1. 编写业务层代码
BookBiz接口代码
package com.yx.biz; import com.yx.model.Book; public interface BookBiz { int deleteByPrimaryKey(Integer bid); int insert(Book record); int insertSelective(Book record); Book selectByPrimaryKey(Integer bid); int updateByPrimaryKeySelective(Book record); int updateByPrimaryKey(Book record); }
BookBizImpl实现类代码
package com.yx.biz.Impl; import com.yx.biz.BookBiz; import com.yx.mapper.BookMapper; import com.yx.model.Book; /** * @author 君易--鑨 * @site www.yangxin.com * @company 木易 * @create 2023-08-21 10:15 */ public class BookBizImpl implements BookBiz { // 调用代码生成器的接口 BookMapper bookMapper; public BookMapper getBookMapper() { return bookMapper; } @Override public int deleteByPrimaryKey(Integer bid) { return bookMapper.deleteByPrimaryKey(bid); } @Override public int insert(Book record) { return bookMapper.insert(record); } @Override public int insertSelective(Book record) { return bookMapper.insertSelective(record); } @Override public Book selectByPrimaryKey(Integer bid) { return bookMapper.selectByPrimaryKey(bid); } @Override public int updateByPrimaryKeySelective(Book record) { return bookMapper.updateByPrimaryKeySelective(record); } @Override public int updateByPrimaryKey(Book record) { return bookMapper.updateByPrimaryKey(record); } }
实体类Book.java
package com.yx.model; public class Book { private Integer bid; private String bname; private Float price; public Book(Integer bid, String bname, Float price) { this.bid = bid; this.bname = bname; this.price = price; } public Book() { super(); } public Integer getBid() { return bid; } public void setBid(Integer bid) { this.bid = bid; } public String getBname() { return bname; } public void setBname(String bname) { this.bname = bname; } public Float getPrice() { return price; } public void setPrice(Float price) { this.price = price; } @Override public String toString() { return "Book{" + "bid=" + bid + ", bname='" + bname + '\'' + ", price=" + price + '}'; } }
2. 数据库工具类
SessionUtil
package com.yx.untils; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; /** * @author 君易--鑨 * @site www.yangxin.com * @company 木易 * @create 2023-08-21 10:15 *用于操作数据库 (对Mybatis进行建模) */ public class SessionUtil { private static SqlSessionFactory sessionFactory; private static ThreadLocal
threadLocal = new ThreadLocal (); static { sessionFactory = new SqlSessionFactoryBuilder().build(SessionUtil.class.getResourceAsStream("/mybatis.cfg.xml")); } public static SqlSession openSession() { SqlSession session = threadLocal.get(); if (null == session) { session = sessionFactory.openSession(); threadLocal.set(session); } return session; } public static void main(String[] args) { SqlSession session = openSession(); System.out.println(session.getConnection()); session.close(); // System.out.println(session.getConnection()); } } mybatis.cfg.xml文件配置
测试类Demo代码
Demo01代码
package com.yx.Demo; import com.yx.biz.BookBiz; import com.yx.biz.Impl.BookBizImpl; import com.yx.mapper.BookMapper; import com.yx.model.Book; import com.yx.untils.SessionUtil; import org.apache.ibatis.session.SqlSession; import org.junit.After; import org.junit.Before; import org.junit.Test; /** * @author 君易--鑨 * @site www.yangxin.com * @company 木易 * @create 2023-08-21 10:26 * 测试增删改查的方法 */ public class Dmeo1 { // 实例化工具类和业务层类 private SqlSession sqlSession; private BookBiz bookBiz; @Before public void a(){ System.out.println("执行测试代码块之前会执行的初始化代码块......"); // 获取session对象 sqlSession=SessionUtil.openSession(); BookBizImpl bookBiz=new BookBizImpl(); // 获取BookMapper对象 BookMapper mapper=sqlSession.getMapper(BookMapper.class); // 将获取到的BookMapper对象添加到bookBiz中 bookBiz.setBookMapper(mapper); // 扩大作用权限 this.bookBiz=bookBiz; } @After public void b(){ System.out.println("执行测试代码块之后会执行的初始化代码块......"); // 提交数据库提交事务 sqlSession.commit(); } @Test // 查看 public void test1(){ System.out.println("测试查看方法..."); // 传入参数为id Book book=bookBiz.selectByPrimaryKey(25); // 打印输出 System.out.println(book); } @Test // 删除 public void test2(){ System.out.println("测试删除方法..."); // 传入参数为id int book=bookBiz.deleteByPrimaryKey(25); // 打印输出 System.out.println(book); } @Test // 新增 public void test3(){ System.out.println("测试新增方法..."); // 传入参数为book对象 Book book=new Book(); book.setBid(25); book.setBname("斗破苍穹"); book.setPrice(25.5f); int b=bookBiz.insert(book); // 打印输出 System.out.println(b); } @Test // 修改 public void test4(){ System.out.println("测试修改方法..."); // 传入参数为book对象 Book book=new Book(); book.setBid(25); book.setBname("斗破苍穹"); book.setPrice(35.5f); int b=bookBiz.updateByPrimaryKey(book); // 打印输出 System.out.println(b); } }
测试结果
查看
删除
新增
修改
感谢老铁们的阅读与支持,希望老铁能够三连一波,这无疑是对我最大的支持。请敬请期待下期博客的分享,我们下期再见。
你可能感兴趣的:(Spring,Mysql,Mybatis,mybatis,java,spring)