什么是Mybatis,Mybatis怎样使用

简介: 什么是Mybatis,Mybatis怎样使用



       MyBatis(也称为iBatis)是一个Java持久性框架,用于简化数据库访问操作,特别是与关系数据库的交互。它提供了一种将SQL语句与Java代码分离的方式,允许你在XML文件中编写SQL语句,并使用Java对象来映射数据库表。

MyBatis的主要特点:

  1. SQL和Java代码分离:MyBatis允许你将SQL语句与Java代码分开,这使得维护和调试SQL变得更加容易。
  2. 强大的参数映射:MyBatis支持各种参数映射,包括基本数据类型、复杂对象、集合等。
  3. 自动映射:MyBatis可以将查询结果自动映射到Java对象,减少了手动的数据转换。
  4. 动态SQL:MyBatis支持动态SQL,你可以在XML文件中构建有条件的SQL查询,根据不同的条件动态生成SQL语句。
  5. 可插拔的映射器接口:MyBatis的映射器(Mapper)接口是可插拔的,这意味着你可以为每个数据库表创建一个映射器接口,然后将它们与SQL语句相关联。
  6. 批处理支持:MyBatis支持批处理操作,允许你一次执行多个SQL语句,提高了性能。

使用MyBatis的基本步骤:

  1. 引入MyBatis依赖:首先,在你的项目中引入MyBatis的相关依赖,通常是在项目构建工具(如Maven或Gradle)中配置。
  2. 配置MyBatis:创建一个MyBatis配置文件(通常是XML格式),配置数据源信息、事务管理器、以及映射器(Mapper)文件的路径。
    示例MyBatis配置文件(mybatis-config.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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/>
                <property name="username" value="your_username"/>
                <property name="password" value="your_password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/mappers/MyMapper.xml"/>
    </mappers>
</configuration>
  1. 创建一个普通的Java类,通常用于表示数据库表中的数据:这个类应该包含与数据库表字段对应的属性,以便在MyBatis中进行数据映射。
public class MyEntity {
    private int id;
    private String name;
    private int age;
    public MyEntity() {
        // 无参构造函数
    }
    public MyEntity(String name, int age) {
        this.name = name;
        this.age = age;
    }
    // Getter和Setter方法
    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 "MyEntity{" +
               "id=" + id +
               ", name='" + name + '\'' +
               ", age=" + age +
               '}';
    }
}
  1. 创建映射器接口:创建一个Java接口,用于定义数据库操作的方法。这些方法将在映射器XML文件中定义的SQL语句中使用。
    示例映射器接口:
public interface MyMapper {
    MyEntity selectById(int id);
    List<MyEntity> selectAll();
    void insert(MyEntity entity);
    void update(MyEntity entity);
    void delete(int id);
}
  1. 创建映射器XML文件:在XML文件中定义SQL语句,并将它们与映射器接口中的方法关联。这些SQL语句包括查询、插入、更新和删除操作。
    示例映射器XML文件(MyMapper.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="com.example.mappers.MyMapper">
    <select id="selectById" resultType="com.example.MyEntity">
        SELECT * FROM my_table WHERE id = #{id}
    </select>
    <select id="selectAll" resultType="com.example.MyEntity">
        SELECT * FROM my_table
    </select>
    <insert id="insert" parameterType="com.example.MyEntity">
        INSERT INTO my_table (name, age) VALUES (#{name}, #{age})
    </insert>
    <update id="update" parameterType="com.example.MyEntity">
        UPDATE my_table SET name = #{name}, age = #{age} WHERE id = #{id}
    </update>
    <delete id="delete" parameterType="int">
        DELETE FROM my_table WHERE id = #{id}
    </delete>
</mapper>
  1. 编写Java代码:在你的Java代码中使用MyBatis的SqlSessionFactory来获取SqlSession,然后调用映射器接口中的方法执行数据库操作。
    示例Java代码:
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
try (SqlSession session = sqlSessionFactory.openSession()) {
    MyMapper myMapper = session.getMapper(MyMapper.class);
    
    // 查询
    MyEntity entity = myMapper.selectById(1);
    
    // 插入
    MyEntity newEntity = new MyEntity("John Doe", 30);
    myMapper.insert(newEntity);
    session.commit();
}
  1. 关闭资源:在使用完SqlSession后,记得关闭它以释放数据库连接等资源。

小结

       这些是使用MyBatis的基本步骤。MyBatis还提供了许多高级功能,如动态SQL、缓存管理、批处理等,以满足各种数据库访问需求。使用MyBatis可以使数据库访问操作更加简单和可维护。

相关文章
|
5天前
|
SQL XML Java
学习Mybatis相关知识
一、什么是Mybatis? 1、Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。开发人员直接编写原生态sql,即可严格控制sql执行性能、且灵活度高。
13 0
|
8月前
|
Java 数据库连接 数据库
【MyBatis】spring整合mybatis教程(详细易懂)
Spring提供了一种轻量级的容器和依赖注入的机制,可以简化应用程序的配置和管理。会初始化N个数据库链接对象,一般在10个,当需要用户请求操作数据库时候,那么就会直接在数据库连接池中获取链接,用完放回连接池中。我们的实体类创建属性的时候我写get、set等方法,过于麻烦,但是我们有一个lombok,可以节约掉这些。这里是自己本地路径的MySQL的jar包,是需要更改的,路径赋值后也需要再加上。把我们的生成的BookMapper里面的方法复制到我们新建的BookBiz里面。选中对应的项目,依次选中生成。
【MyBatis】spring整合mybatis教程(详细易懂)
|
5天前
|
SQL 缓存 Java
Mybatis学习文章
Mybatis学习文章
|
5天前
|
Java 关系型数据库 MySQL
一文彻底搞懂Mybatis系列(七)之使用Mybatis的小技巧
一文彻底搞懂Mybatis系列(七)之使用Mybatis的小技巧
|
9月前
|
SQL 缓存 Java
Mybatis学习
Mybatis学习
|
11月前
|
XML SQL Java
【MyBatis学习笔记 五】MyBatis注解开发实现方式
【MyBatis学习笔记 五】MyBatis注解开发实现方式
86 0
|
SQL 算法 Java
用过MyBatis-Plus,我再也不想用mybatis了——MyBatis-Plus快速入门加常见注解总结,一文快速掌握MyBatis-Plus
用过MyBatis-Plus,我再也不想用mybatis了——MyBatis-Plus快速入门加常见注解总结,一文快速掌握MyBatis-Plus
|
XML SQL 设计模式
MyBatis学习(一)
MyBatis学习(一)
66 1
MyBatis学习(一)
|
SQL Java 数据库连接
MyBatis学习(四)
MyBatis学习(四)
76 0
MyBatis学习(四)
|
SQL Java 数据库连接
MyBatis学习(三)
MyBatis学习(三)
68 0
MyBatis学习(三)