mybatis入门

本文介绍MyBatis框架的基本概念及使用方法,包括环境搭建、配置文件编写、接口定义及测试等步骤,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis入门

自我感觉

MyBatis是一个半自动的ORM框架,因为完整的ORM框架是已经对JDBC进行了封装,很少会让你写sql语句,一般会推荐你写HQL,但是MyBatis框架是必须要求开发者编写SQL语句的。

吐槽

Q:竟然是半自动ORM框架,还要自己写sql语句,为什么还要用他,还不如用hibernate完整的ORM框架呢。

A:其实MyBatisHibernate他们直接的相同点实在太多,比如二级缓存Session的生命周期都是一致的。唯一的不同点是MyBatis可以进行详细的SQL设计,有比较成熟的逻辑判断,可以动态的执行SQL,并且上手难度比Hibernate低。

百度百科

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

特点

  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管-理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。

  • 解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
  • 提供映射标签,支持对象与数据库的orm字段关系映射
  • 提供对象关系映射标签,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql。

入门例子

第一步: 新建一个Maven项目

我这里新建了一个Web的Maven项目,你们新建一个普通的Maven项目就可以了,如果不会创建项目的,可以去百度一下,这里就不多描述了。

第二步: 添加依赖包

mybatis没有像Spring一样有很多jar包,如果你只用到基础,那么就导入MyBatis包就可以了。当然数据库驱动包也必须要,不然怎么连接数据库

<!-- MyBatis -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>6.0.6</version>
</dependency>

第三步:创建MyBatis所需要的配置文件

首先先新建一个连接数据库的配置文件:

jdbc.properties文件
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql:///db_test
jdbc.username=root
jdbc.password=root

文件根据自己的数据库做修改

配置MyBatis全局文件:configuration.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 引入JDBC配置文件 -->
    <properties resource="jdbc.properties"></properties>
    <!-- 批量设置别名 -->
    <typeAliases>
        <package name="cn.wenhaha.entiy"/>
    </typeAliases>

  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
      </dataSource>
    </environment>
  </environments>

  <!-- 需要映射文件 -->
  <mappers>
    <package name="cn.wenhaha.mappers"/>

  </mappers>
</configuration>
创建实体类

Student.java

package cn.wenhaha.entiy;

public class Student {
    private int id;
    private String name;
    private int age;

    public Student() {
        super();
    }
    public Student(int id, String name, int age) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
    }

}
定义一个接口

StudentMapper.java

package cn.wenhaha.mappers;

import java.util.List;

import cn.wenhaha.entiy.Student;

public interface StudentMapper {
    /**
     * 添加
     * @param studnet
     * @return
     */
    public int add(Student studnet);

    /**
     * 删除
     * @param id
     */
    public void delete(int id);


    /**
     * 更新
     * @param student
     */
    public void updata(Student student);


    public List<Student> getAll();

}
为接口写配置文件

在这里不需要写实现该接口的实体类,我们只需要写MyBatis的配置文件,就可以让MyBatis自动实现。所以用了MyBatis后,我们是面向接口编程

StudentMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.wenhaha.mappers.StudentMapper">

    <!-- 设置自定义结果集 -->
    <resultMap type="Student" id="StudentResult">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="age" column="age"/>
    </resultMap>

    <!-- 插入就用insert标签 id对应接口的方法名 parmeterType 是参数的类型 -->
    <insert id="add" parameterType="student"  >
        insert into t_student values(#{id},#{name},#{age})
    </insert>

    <delete id="delete" parameterType="Integer">
        delete from t_student where id=#{id}
    </delete>

    <update id="updata" parameterType="Student">
        update t_student set name=#{name},age=#{age} where id=#{id} 
    </update>

    <select id="getAll" resultMap="StudentResult">
        select * from t_student
    </select>

</mapper> 

最后一步:测试

    public static void main(String[] args) throws IOException {
        InputStream inputStream = Resources.getResourceAsStream("configuration.xml");

        SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession openSession = sqlSessionFactory.openSession();
        StudentMapper mapper = openSession.getMapper(StudentMapper.class);
        List<Student> all = mapper.getAll();
        System.out.println(all);
}

输出结果:

内容概要:本文介绍了多种开发者工具及其对开发效率的提升作用。首先,介绍了两款集成开发环境(IDE):IntelliJ IDEA 以其智能代码补全、强大的调试工具和项目管理功能适用于Java开发者;VS Code 则凭借轻量级和多种编程语言的插件支持成为前端开发者的常用工具。其次,提到了基于 GPT-4 的智能代码生成工具 Cursor,它通过对话式编程显著提高了开发效率。接着,阐述了版本控制系统 Git 的重要性,包括记录代码修改、分支管理和协作功能。然后,介绍了 Postman 作为 API 全生命周期管理工具,可创建、测试和文档化 API,缩短前后端联调时间。再者,提到 SonarQube 这款代码质量管理工具,能自动扫描代码并检测潜在的质量问题。还介绍了 Docker 容器化工具,通过定义应用的运行环境和依赖,确保环境一致性。最后,提及了线上诊断工具 Arthas 和性能调优工具 JProfiler,分别用于生产环境排障和性能优化。 适合人群:所有希望提高开发效率的程序员,尤其是有一定开发经验的软件工程师和技术团队。 使用场景及目标:①选择合适的 IDE 提升编码速度和代码质量;②利用 AI 编程助手加快开发进程;③通过 Git 实现高效的版本控制和团队协作;④使用 Postman 管理 API 的全生命周期;⑤借助 SonarQube 提高代码质量;⑥采用 Docker 实现环境一致性;⑦运用 Arthas 和 JProfiler 进行线上诊断和性能调优。 阅读建议:根据个人或团队的需求选择适合的工具,深入理解每种工具的功能特点,并在实际开发中不断实践和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值