Mybatis实现DAO层开发(原始Dao开发方式和Mapper接口代理开发方式)

Mybatis实现DAO层开发

使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方式和Mapper接口代理开发方式。而现在主流的开发方式是接口代理开发方式,这种方式总体上更加简便。我们的课程讲解也主要以接口代理开发方式为主。

一 . Mybatis实现DAO的传统开发方式

传统方式开发DAO 的说明,需求如下:

  1. 根据用户id查询一个用户信息
  2. 根据用户名称模糊查询用户信息列表
  3. 添加用户信息

1. SqlSession的使用分析

SqlSession中封装了对数据库的操作,如:查询、插入、更新、删除等。

通过SqlSessionFactory创建SqlSession,而SqlSessionFactory是通过SqlSessionFactoryBuilder进行创建。

2. SqlSessionFactoryBuilder

SqlSessionFactoryBuilder用于创建SqlSessionFacoty,SqlSessionFacoty一旦创建完成就不需要SqlSessionFactoryBuilder了,因为SqlSession是通过SqlSessionFactory生产,所以可以将SqlSessionFactoryBuilder当成一个工具类使用,最佳使用范围是方法范围即方法体内局部变量。

3.  SqlSessionFactory

SqlSessionFactory是一个接口,接口中定义了openSession的不同重载方法,SqlSessionFactory的最佳使用范围是整个应用运行期间,一旦创建后可以重复使用,通常以单例模式管理SqlSessionFactory。

4. SqlSession

SqlSession是一个面向用户的接口, sqlSession中定义了数据库操作方法。

每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能共享使用,它也是线程不安全的。因此最佳的范围是请求或方法范围。绝对不能将SqlSession实例的引用放在一个类的静态字段或实例字段中。

打开一个 SqlSession;使用完毕就要关闭它。通常把这个关闭操作放到 finally 块中以确保每次都能执行关闭。如下:


SqlSession session = sqlSessionFactory.openSession();

try {
        // do work
} finally {
       session.close();
}

 

5. 开发UserMaaper.xml映射文件

在UserMapper.xml映射文件中,按照需求开发相关的配置,具体需求如下:

  1. 根据用户id查询一个用户信息
  2. 根据用户名称模糊查询用户信息列表
  3. 添加用户信息

重新配置UserMapper.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="test">

    <!--根据id查询-->
    <select id="findByUserId" parameterType="java.lang.Integer" resultType="com.itheima.domain.User">
        SELECT * FROM user WHERE id=#{id}
    </select>


    <!--模糊查询-->
    <select id="findUserByUsername" parameterType="java.lang.String" resultType="com.itheima.domain.User">
        SELECT * FROM  user WHERE  username LIKE '${value}'
    </select>

    <!--添加用户-->
    <insert id="saveUser" parameterType="com.itheima.domain.User">
        <selectKey keyColumn="id" keyProperty="id" resultType="java.lang.Integer" order="AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey>
        INSERT INTO user(username,birthday,sex,address)VALUES(#{username},#{birthday},#{sex},#{address})
    </insert>
</mapper>

6. 开发UserDao接口及UserDaoImpl实现类

UserD

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用Mybatis-Plus进行通用DAO封装的示例代码: 1. 首先,我们需要引入Mybatis-Plus依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> ``` 2. 接着,我们需要定义一个基础的Mapper接口,用于封装通用的增删改查操作: ```java import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface MyBaseMapper<T> extends BaseMapper<T> { } ``` 3. 然后,我们需要定义一个基础的Service接口,用于封装通用的增删改查操作: ```java import com.baomidou.mybatisplus.extension.service.IService; public interface MyBaseService<T> extends IService<T> { } ``` 4. 最后,我们需要定义一个基础的ServiceImpl实现类,用于实现通用的增删改查操作: ```java import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; public abstract class MyBaseServiceImpl<M extends MyBaseMapper<T>, T> extends ServiceImpl<M, T> implements MyBaseService<T> { } ``` 通过以上代码实现,我们可以很方便地使用Mybatis-Plus进行通用DAO封装。接下来,我们只需要定义具体的Mapper和Service接口,继承以上基础接口即可,如: ```java public interface UserMapper extends MyBaseMapper<User> { } public interface UserService extends MyBaseService<User> { } public class UserServiceImpl extends MyBaseServiceImpl<UserMapper, User> implements UserService { } ``` 这样,我们就可以通过UserService接口,调用Mybatis-Plus提供的通用方法,实现对User表的增删改查操作了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值