MyBatis简介及其代码样例

MyBatis 是一个支持自定义 SQL、存储过程以及高级映射的优秀的持久层框架。

一、MyBatis 的特点

  1. 灵活性高

    • 允许开发者编写自定义 SQL 语句,能够精确地控制数据库操作,满足复杂的业务需求。
    • 可以根据不同的数据库进行 SQL 优化,提高性能。
  2. 易于维护

    • SQL 语句与 Java 代码分离,使得数据库层的维护更加容易。
    • 当数据库结构发生变化时,只需修改相应的 SQL 映射文件,而不需要修改大量的 Java 代码。
  3. 与 Spring 等框架集成方便

    • 可以很容易地与 Spring 框架集成,实现依赖注入和事务管理等功能。

二、代码样例

  1. 首先创建一个 Maven 项目,并在pom.xml文件中添加 MyBatis 的依赖:
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.10</version>
</dependency>
  1. 创建数据库表和实体类
    • 假设我们有一个名为user的表,包含idnameage字段。创建对应的实体类User
public class User {
    private int id;
    private String name;
    private int age;

    // 构造函数、getter 和 setter 方法
}
  1. 创建 Mapper 接口
    • 创建一个UserMapper接口,用于定义数据库操作方法:
import java.util.List;

public interface UserMapper {
    List<User> getAllUsers();
    User getUserById(int id);
    void insertUser(User user);
    void updateUser(User user);
    void deleteUser(int id);
}
  1. 配置 MyBatis
    • 创建一个mybatis-config.xml配置文件,用于配置数据库连接和 Mapper 文件路径等信息:
<?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/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>
  1. 创建 Mapper XML 文件
    • 创建一个UserMapper.xml文件,用于实现 Mapper 接口中的方法:
<?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.UserMapper">
    <select id="getAllUsers" resultType="User">
        SELECT * FROM user;
    </select>
    <select id="getUserById" parameterType="int" resultType="User">
        SELECT * FROM user WHERE id = #{id};
    </select>
    <insert id="insertUser" parameterType="User">
        INSERT INTO user (name, age) VALUES (#{name}, #{age});
    </insert>
    <update id="updateUser" parameterType="User">
        UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id};
    </update>
    <delete id="deleteUser" parameterType="int">
        DELETE FROM user WHERE id = #{id};
    </delete>
</mapper>
  1. 使用 MyBatis
    • 创建一个测试类来测试 MyBatis 的功能:
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MyBatisTest {
    public static void main(String[] args) {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();

            // 查询所有用户
            List<User> users = sqlSession.selectList("com.example.UserMapper.getAllUsers");
            for (User user : users) {
                System.out.println(user.getId() + ", " + user.getName() + ", " + user.getAge());
            }

            // 查询单个用户
            User user = sqlSession.selectOne("com.example.UserMapper.getUserById", 1);
            System.out.println(user.getId() + ", " + user.getName() + ", " + user.getAge());

            // 插入用户
            User newUser = new User();
            newUser.setName("New User");
            newUser.setAge(25);
            sqlSession.insert("com.example.UserMapper.insertUser", newUser);
            sqlSession.commit();

            // 更新用户
            user.setName("Updated User");
            user.setAge(30);
            sqlSession.update("com.example.UserMapper.updateUser", user);
            sqlSession.commit();

            // 删除用户
            sqlSession.delete("com.example.UserMapper.deleteUser", user.getId());
            sqlSession.commit();

            sqlSession.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

通过以上步骤,你可以使用 MyBatis 进行数据库操作。MyBatis 提供了强大的功能和灵活性,使得 Java 应用程序与数据库的交互更加方便和高效。

内容: 这个合成医疗保健数据集的创建是为了作为数据科学、机器学习和数据分析爱好者的宝贵资源。 灵感: 医疗保健数据通常很敏感,并受隐私法规的约束,因此难以访问以进行学习和实验。为了解决这一差距,我利用 Python 的 Faker 生成了一个数据集,该数据集反映了医疗保健记录中常见的结构和属性。通过提供这些合成数据,我希望促进医疗保健分析领域的创新、学习和知识共享。 表格信息: 每列都提供有关患者、其入院情况和提供的医疗保健服务的特定信息,使此数据集适用于医疗保健领域的各种数据分析和建模任务。以下是数据集中每一列的简要说明 - 名字:此列表示与医疗保健记录关联的患者的姓名。 年龄:患者入院时的年龄,以年表示。 性:指示患者的性别,“男性”或“女性”。 血型:患者的血型,可以是常见的血型之一(如,“A+”、“O-”等)。 医疗状况:此列指定了与患者相关的主要医疗状况或诊断,如“糖尿病”、“高血压”、“哮喘”等。 入学日期:患者入住医疗机构的日期。 医生:在患者入院期间负责护理的医生的姓名。 医院:标识患者收治的医疗机构或医院。 保险提供商:此列指示患者的保险提供商,可以是多个选项之一,包括“Aetna”、“Blue Cross”、“Cigna”、“UnitedHealthcare”和“Medicare”。 账单金额:患者在入院期间为他们的医疗保健服务开具的账单金额。这表示为浮点数。 房间号:患者入院期间入住的房间号。 入场类型:指定入院类型,可以是“紧急”、“选择性”或“紧急”,以反映入院的情况。 出院日期:患者从医疗机构出院的日期,基于入院日期和实际范围内的随机天数。 药物:确定患者在入院期间开具或服用的药物。子包括“阿司匹林”、“布洛芬”、“青霉素”、“扑热息痛”和“立普妥”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值