当前位置: ManBetXapp > 百科 > 科技 >正文

java mybatis

人气:294 ℃ /2023-03-09 02:54:48

java中mybatis是什么,怎么使用呢?不知道的小伙伴来看看小编今天的分享吧!

1、mybatis简介:

MyBatis是一个开源、轻量级的数据持久化框架,是 JDBC 和 Hibernate 的替代方案。MyBatis 内部封装了 JDBC,简化了加载驱动、创建连接、创建 statement 等繁杂的过程,开发者只需要关注 SQL 语句本身。数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中数据模型的统称。例如,文件的存储、数据的读取以及对数据表的增删改查等都是数据持久化操作。

2、mybatis作用:

MyBatis 支持定制化 SQL、存储过程以及高级映射,可以在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM 实现。其封装性低于 Hibernate,但性能优秀、小巧、简单易学、应用广泛。

ORM(Object Relational Mapping,对象关系映射)是一种数据持久化技术,它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过 JavaBean 对象去操作数据库表中的数据。

MyBatis 的主要思想是将程序中的大量 SQL 语句剥离出来,使用 XML 文件或注解的方式实现 SQL 的灵活配置,将 SQL 语句与程序代码分离,在不修改程序代码的情况下,直接在配置文件中修改 SQL 语句。

MyBatis 与其它持久性框架最大的不同是,MyBatis 强调使用 SQL,而其它框架(例如 Hibernate)通常使用自定义查询语言,即 HQL(Hibernate查询语言)或 EJB QL(Enterprise JavaBeans查询语言)。

3、优点:

MyBatis是免费且开源的。与JDBC相比,减少了50%以上的代码量。

MyBatis是最简单的持久化框架,小巧并且简单易学。

MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL 写在 XML 中,和程序逻辑代码分离,降低耦合度,便于同一管理和优化,提高了代码的可重用性。

提供 XML 标签,支持编写动态 SQL 语句。

提供映射标签,支持对象与数据库的 ORM 字段关系映射。

支持存储过程。MyBatis 以存储过程的形式封装 SQL,可以将业务逻辑保留在数据库之外,增强应用程序的可移植性、更易于部署和测试。

4、缺点:

编写 SQL 语句工作量较大,对开发人员编写 SQL 语句的功底有一定要求。

SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

使用场景

MyBatis 专注于 SQL 本身,是一个足够灵活的 DAO 层解决方案。适用于性能要求高,且需求变化较多的项目,如互联网项目。

5、拓展:

Mybatis-Plus(简称 MP)是 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,支持 Mybatis 所有原生的特性,为简化开发、提高效率而生。

以上就是小编今天的分享了,希望可以帮助到大家。

java mybatis plus

手把手教你如何使用MyBatisPlus

哈喽,大家好,我是指北君。

本篇文章,我们通过 MyBatis Plus 来对一张表进行 CRUD 操作,来看看是如何简化我们开发的。

1、创建测试表

创建 USER 表:

DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `ID` int(11) NOT NULL, `USER_NAME` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL, `USER_AGE` int(11) DEFAULT NULL, PRIMARY KEY (`ID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

向 USER 表中插入两条数据:

insert INTO `user` VALUES ('1', 'IT可乐', '18');INSERT INTO `user` VALUES ('2', 'YSOcean', '22');

打开表,发现有两条数据了:

2、创建 Spring Boot 工程

通过 IDEA 创建 Spring Boot 工程,如果不能连接 https://start.spring.io/ 网址,可以将网址变成 https://start.aliyun.com/ ,如下所示:

3、导入依赖

com.baomidou mybatis-plus-boot-starter 3.3.2 Mysql mySQL-connector-java runtime

首先mybatis-plus 我们导入最新版 3.3.2。另外,由于我数据采用的是 MySql,所以这里导入了 Mysql 的连接依赖。

另外,为了简化JavaBean 类的书写,我这里额外导入一个 lombok 插件依赖。

org.projectlombok lombok true

通过这个依赖的相关注解,我们可以不用书写繁琐的 get/set 方法。

4、编写数据库配置文件

在 Springboot 项目的 resource 目录下,新建 application.yml 文件,添加如下内容:

server: port: 8082spring: datasource: url: jdbc:mysql://localhost:3306/mybatisplus?useUnicode=true&characterEncoding=UTF-8 username: root password: root # >= 6.x: com.mysql.cj.jdbc.Driver # <= 5.x: com.mysql.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver

注意:url里面填写的 mybatisplus 是我的数据库名称,注意修改,username和password分别填写自己的数据库连接名称和密码。

5、编写代码

①、实体类User.java

@Getter@Setterpublic class User { private Long id; private String userName; private String userAge;}

②、创建UserMapper 接口

import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.ys.mybatisplusstudy.entry.User;public interface UserMapper extends BaseMapper {}

③、启动类增加@MapperScan注解

@SpringBootApplication@MapperScan("com.ys.mybatisplusstudy.mapper")public class MybatisplusstudyApplication { public static void main(String[] args) { SpringApplication.run(MybatisplusstudyApplication.class, args); }}

如果不想在启动类加 @MapperScan 注解,也可在每个 Mapper 接口上增加 @Mapper 注解。

所有配置上面都以完成,是不是很简单,接下来我们对这张表进行CRUD 测试。

6、CRUD 测试

我们在编写 UserMapper 接口时,其继承了一个 BaseMapper 接口:

public interface UserMapper extends BaseMapper {}

我们进入到 BaseMapper 内部,发现其结构如下:

这些方法便是我们常用的增删改查了,下面我们分别演示几个常用的。

①、insert:新增一条记录

@SpringBootTestclass MybatisplusstudyApplicationTests { @Autowired private UserMapper userMapper; /** * 新增一条记录 */ @Test public void testInsert(){ User user = new User(); user.setId(3L); user.setUserName("test insert"); user.setUserAge("1"); int insert = userMapper.insert(user); System.out.println("影响记录数:" insert); }}

执行完毕后,我们查看数据库:

②、delete:删除记录

/** * 根据id删除一条记录 */ @Test public void testDeleteById(){ int num = userMapper.deleteById(3L); System.out.println("删除的记录数为:" num); QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("id",3L); userMapper.delete(wrapper); }/** * 构造相关条件删除记录 */ @Test public void testDelete(){ QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("USER_NAME","test insert"); int num = userMapper.delete(wrapper); System.out.println("删除的记录数为:" num); }

③、update:修改记录

/** * 根据id修改 */ @Test public void testudpateById(){ User user = new User(); user.setId(3L); user.setUserName("test update"); int num = userMapper.updateById(user); System.out.println("修改的记录数为:" num); }

④、select:查询记录

/** * 查询User表所有记录 */ @Test public void testSelectAll(){ List users = userMapper.selectList(null); users.forEach(x-> System.out.println(x.getId() "-" x.getUserName() "-" x.getUserAge())); }/** * 查询指定记录 */ @Test public void testSelectWrapper(){ QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("user_name","IT可乐"); List users = userMapper.selectList(wrapper); users.forEach(x-> System.out.println(x.getId() "-" x.getUserName() "-" x.getUserAge())); }

发现没有,做增删改查是如此的丝滑流畅,都不用写SQL语句了。

当然,这都只是单表的简单玩法,后面我们会介绍高阶玩法。

7、打印SQL语句

这里补充一个小知识点,通过如下配置,我们可以查看执行的 SQL 语句日志。

在 applicatio.yml 文件中,进行如下配置:

# 配置slq打印日志mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

当然,这种配置只是把 SQL 日志打印到控制台便于我们调试,后面会介绍更加强大的 SQL 分析工具。

来源:https://mp.weixin.qq.com/s/uc4MfyVlne_Ek1EPBk8jUQ

作者:指北君

搜索更多有关“ java mybatis”的信息 [百度搜索] [SoGou搜索] [头条搜索] [360搜索]
CopyRight © 2008-2024 ManBetXappAll Rights Reserved. 手机版