Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / mysql

MyBatis实践--Mapper与DAO_MySQL

作者:堕魂灭天   发布日期:2024-08-21   浏览:1041

MyBatis是一个开源的持久层框架,它可以帮助开发者简化数据库操作的代码。在MyBatis中,Mapper和DAO是两个常用的概念。

Mapper是MyBatis中的一个接口,它定义了数据库操作的方法。在Mapper接口中,我们可以定义各种查询、插入、更新和删除等操作的方法,并使用注解或XML配置文件来映射SQL语句。Mapper接口中的方法可以直接被调用,无需编写具体的SQL语句。

下面是一个Mapper接口的示例:

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

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

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

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

DAO(Data Access Object)是一种设计模式,它用于封装数据访问的逻辑。在MyBatis中,DAO通常是一个实现了Mapper接口的类。DAO类负责调用Mapper接口中定义的方法,并处理异常等逻辑。

下面是一个DAO类的示例:

public class UserDao {
    private SqlSessionFactory sqlSessionFactory;

    public UserDao(SqlSessionFactory sqlSessionFactory) {
        this.sqlSessionFactory = sqlSessionFactory;
    }

    public User getUserById(int id) {
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper userMapper = session.getMapper(UserMapper.class);
            return userMapper.getUserById(id);
        }
    }

    public void addUser(User user) {
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper userMapper = session.getMapper(UserMapper.class);
            userMapper.addUser(user);
            session.commit();
        }
    }

    public void updateUser(User user) {
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper userMapper = session.getMapper(UserMapper.class);
            userMapper.updateUser(user);
            session.commit();
        }
    }

    public void deleteUser(int id) {
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper userMapper = session.getMapper(UserMapper.class);
            userMapper.deleteUser(id);
            session.commit();
        }
    }
}

在DAO类中,我们首先需要通过SqlSessionFactory获取一个SqlSession对象,然后再通过SqlSession的getMapper方法获取Mapper接口的实例。之后,我们可以直接调用Mapper接口中定义的方法来执行数据库操作。

需要注意的是,每个数据库操作都需要在一个新的SqlSession中进行,并且在操作完成后需要调用session.commit()方法提交事务。

以上就是Mapper和DAO在MyBatis中的实践方法。使用Mapper接口和DAO类可以帮助我们更方便地进行数据库操作,并提高代码的可读性和可维护性。

上一篇:Mysql主从复制搭建_MySQL

下一篇:用MySQL构建一个工作跟踪流程_MySQL

大家都在看

php进入mysql(php进入根目录)

php链接不到mysql(php连接mys

php连接小马(php连接mysql代码)

php与ldap怎么连接(php pdo连

php代码后台增删改查(php对mysql

[PHP从小白到大牛]-022 PHP操作

php搭建mysql连接池

PHP MySQL:连接MySQL数据库

PHP访问MySQL查询超时设置

PHP 原生连接 Mysql

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站