mybatis使用(简单易上手)

一、mybatis介绍

1、mybatis是什么

MyBatis是一个开源的Java持久层框架,它通过简单的XML或注解配置,实现了对关系数据库的操作。MyBatis优点在于它可以自定义SQL语句,将程序代码与SQL语句分离,避免了在Java代码中写SQL语句的不便和繁琐,同时还能提供动态SQL的支持。

2、mybatis支持的数据库

MyBatis支持的数据库包括MySQL、Oracle、DB2、SQLServer、Sybase、PostgreSQL、H2等常见的关系型数据库,它提供了丰富的映射标签和查询标签,可以使开发人员使用MyBatis进行各种复杂的SQL操作。

3、mybatis插件机制

这一部分可直接跳过

MyBatis还提供了插件的扩展机制,可以通过插件来增强MyBatis的功能,比如实现分页查询、记录SQL语句执行时间等。
MyBatis的插件机制基于拦截器模式,开发人员可以通过实现Interceptor接口来创建自定义插件,并在MyBatis的配置文件中配置插件。
插件的核心是实现拦截器接口中的intercept方法。该方法接收一个Invocation对象作为参数,Invocation对象封装了要执行的SQL语句以及执行该语句的对象。通过拦截器可以对该SQL语句进行修改,或者在执行前后执行一些其他逻辑。
下面是一个简单的插件实现示例:

@Intercepts({
    @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})
})
public class ExamplePlugin implements Interceptor {

    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        // 获取原始的参数
        Object[] args = invocation.getArgs();
        // 执行原始的SQL语句
        Object result = invocation.proceed();
        // 对查询结果进行加工
        return result;
    }

    @Override
    public Object plugin(Object target) {
        // 使用MyBatis提供的Plugin.wrap方法来生成代理对象
        return Plugin.wrap(target, this);
    }

    @Override
    public void setProperties(Properties properties) {
        // 可以在这里读取配置文件中的参数
    }

}

在配置文件中配置插件非常简单,只需要将插件类的全限定名添加到标签中即可:

<configuration>
  <plugins>
    <plugin interceptor="com.example.ExamplePlugin">
      <!-- 配置插件需要的参数 -->
    </plugin>
  </plugins>
</configuration>

需要注意的是,插件的拦截器类型和方法需要和被拦截的对象对应。比如上面的示例中,@Signature注解中指定的是Executor类的query方法,那么该插件就只能拦截Executor对象的query方法。

二、springboot集成mybatis

springboot集成mybatis的过程很简单,如下简单的几步。

1、引入依赖

直接将下面的依赖引入springboot的pom文件中:

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.1</version>
        </dependency>

注意我这个mybatis版本为3.0.1,如果需要选择合适自己的版本可以点击链接跳转选择合适版本,点击跳转
然后点击相应的版本,选择maven,复制依赖粘贴到pom文件即可。
在这里插入图片描述

2、配置mybatis

加入依赖之后需要在配置文件中配置数据源和mybatis,在yaml文件或者properties文件中添加如下模板:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver  #mysql8的驱动
    url: jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false
    username: root
    password: root
  mybatis:
    mapper-locations: classpath:mapper/*.xml

然后需要在启动类添加一个注解@MapperScan("com.example.mapper")

@SpringBootApplication
@MapperScan(basePackages = "com.example.mapper")
public class GdFApplication {

    public static void main(String[] args) {
        SpringApplication.run(GdFApplication.class, args);
    }

}

到此基本的配置已经完成。

三、使用mybatis

对于在springboot中使用mybatis有以下几种方式:

  • 注解方式:使用MyBatis提供的注解(如@Select、@Insert等)在Mapper接口中定义SQL语句,Spring Boot会自动扫描Mapper接口并注入实现类。

  • XML方式:在MyBatis的XML文件中编写SQL语句,通过在Mapper接口中定义方法名和参数映射XML文件中的SQL语句。

  • 注解和XML方式混合使用:可以在Mapper接口中同时使用注解和XML方式定义SQL语句,但需要注意方法名不能重复。

对于我个人来说,我是比较喜欢使用注解方式使用mybatis的,这里两种方式都简单的说一下吧。

1、注解方式使用mybatis

定义Mapper接口并使用注解定义SQL语句:

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM user WHERE id=#{id}")
    User findById(Long id);

    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
    int insert(User user);

    @Update("UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}")
    int update(User user);

    @Delete("DELETE FROM user WHERE id=#{id}")
    int delete(Long id);
}

在应用程序中使用Mapper接口:

@Service
public class UserService {
  @Autowired
  private UserMapper userMapper;

  public User findById(Long id) {
    return userMapper.findById(id);
  }

  public int insert(User user) {
    return userMapper.insert(user);
  }

  public int update(User user) {
    return userMapper.update(user);
  }

  public int delete(Long id) {
    return userMapper.delete(id);
  }
}

  • 以上就是在Spring Boot中使用注解方式使用MyBatis的基本步骤。
  • 需要注意的是,在Mapper接口上需要添加@Mapper注解,以便Spring Boot能够扫描并注入Mapper接口的实现。
  • 同时,需要在配置文件中指定mapper-locations属性,MyBatis会自动扫描指定路径下的Mapper接口。
  • 另外,MyBatis还提供了其他注解,如@Results、@ResultMap、@Options等,可以用来定制查询结果的映射方式、设置自增主键等。

2、XML文件方式

这里推荐使用IDEA中的一款插件better-mybatis-generator,使用步骤如下:

  1. 首先在IDEA插件中心下载better-mybatis-generator插件,如下图所示:
    在这里插入图片描述
    注意下载后启用该插件。

  2. 然后在IDEA的database中配置数据库,如下图所示
    在这里插入图片描述
    按上图步骤点击MySQL之后,按下图所示操作:
    在这里插入图片描述
    注意在点击Test Connection弹出success提示后再点击apply和OK。

  3. 之后在打开IDEA的database,按下图所示操作
    在这里插入图片描述
    前提是你选中的数据库中已有数据表,然后鼠标右键该表,在弹出的内容中,选择mabatis-generate。然后进入下一步。
    这里咱也不知道问什么mybatis-generator插件怎么变成了mabatis-generate了。

  4. 在上一步之后进入了Toos页,配置生成的实体类的包、mapper的包和xml的包,如下图所示:
    在这里插入图片描述
    在根据自己的需要之后,就可以点击ok进行代码生成,生成前可能会弹出输入数据库的账号密码,输入即可。
    注意:如果输入账号密码后出现Failed to connect…则检查一下配置的数据库中的url是否有时区设置,如下图所示。在这里插入图片描述

若没有,则加上?serverTimezone=GMT&useSSL=false

之后重新按照以上步骤生成代码即可,生成成功的代码如下所示。
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis 是一个持久层框架,可以简化数据库访问的操作。下面是使用 MyBatis简单步骤: 1. 引入 MyBatis 依赖:在项目的 `pom.xml` 文件中添加 MyBatis 的依赖项。例如: ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> ``` 2. 创建 MyBatis 配置文件:创建一个名为 `mybatis-config.xml` 的文件,并在该文件中配置 MyBatis 的相关信息,例如数据库连接信息、映射文件路径等。 3. 创建映射文件:创建一个或多个映射文件(`.xml` 格式),用于定义 SQL 语句和结果映射规则。 4. 创建数据访问接口:创建一个或多个 Java 接口,并使用注解或 XML 配置文件来定义数据访问的方法。 5. 配置数据源:在项目中配置数据库连接池,例如使用连接池技术如 HikariCP。 6. 创建 MyBatis 工厂:使用 MyBatis 提供的 `SqlSessionFactoryBuilder` 类读取配置文件,并创建一个 `SqlSessionFactory` 对象。 7. 创建会话:通过 `SqlSessionFactory` 对象创建一个 `SqlSession` 对象,用于执行 SQL 语句。 8. 执行 SQL 语句:通过 `SqlSession` 对象调用接口中定义的方法来执行 SQL 语句,获取结果。 下面是一个简单的示例: ```java // 创建 MyBatis 工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); // 创建会话 SqlSession sqlSession = sessionFactory.openSession(); // 获取数据访问接口 UserDao userDao = sqlSession.getMapper(UserDao.class); // 执行 SQL 语句 User user = userDao.getUserById(1); // 关闭会话 sqlSession.close(); ``` 这只是 MyBatis简单使用方法,具体的使用方式还需要根据实际情况进行配置和调整。希望对你有所帮助!如果有更多问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值