mybatis开发dao两种方法

mybatis开发dao两种方法mybatis是一个支持普通SQL查询,存储过程和高级映射的优秀的持久层的框架,是apache下的顶级项目。mybatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。mybatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO映射成数据库中的记录。其中,开发dao有两种方法,一种原始的dao开发方法,程序员需要写dao接口和dao实现类。另一种…

大家好,又见面了,我是你们的朋友全栈君。

mybatis是一个支持普通SQL查询,存储过程和高级映射的优秀的持久层的框架,是apache下的顶级项目。mybatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。mybatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO映射成数据库中的记录。

其中,开发dao有两种方法,一种原始的dao开发方法,程序员需要写dao接口和dao实现类。另一种是mapper代理方法,程序员只需要写mapper接口相当于dao接口。

 

原始dao开发方法

1.编写dao接口(UserDao)

 

public interface UserDao {  
    // 根据id查询用户信息  
    public User findUserById(int id) throws Exception;  
} 

 

2.编写dao实现类

public class UserDaoImpl implements UserDao {  
  
    // 需要向dao实现类中注入SqlSessionFactory  
    // 这里通过构造方法注入  
    private SqlSessionFactory sqlSessionFactory;  
  
    public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {  
        this.sqlSessionFactory = sqlSessionFactory;  
    }  
  
    @Override  
    public User findUserById(int id) throws Exception {  
        SqlSession sqlSession = sqlSessionFactory.openSession();  
          
        //这里的test.findUserById是与下面的映射文件user.xml中的namespace+id有关。  
        User user = sqlSession.selectOne("test.findUserById", id);  
  
        // 释放资源  
        sqlSession.close();  
  
        return user;  
  
    }  
}  

3.编写映射文件(user.xml)

<mapper namespace="test">  
    <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">  
        SELECT * FROM USER WHERE id=#{value}  
    </select>  
</mapper> 

4.编写测试类

public class UserDaoImplTest {  
    private SqlSessionFactory sqlSessionFactory;  
  
    // 此方法是在执行testFindUserById之前执行  
    @Before  
    public void setUp() throws Exception {  
        // 创建sqlSessionFactory  
  
        // mybatis配置文件  
        String resource = "SqlMapConfig.xml";  
        // 得到配置文件流  
        InputStream inputStream = Resources.getResourceAsStream(resource);  
  
        // 创建会话工厂,传入mybatis的配置文件信息  
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);  
    }  
  
    @Test  
    public void testUserDaoImpl() throws Exception{  
        // 创建UserDao的对象  
        UserDao userDao = new UserDaoImpl(sqlSessionFactory);  
  
        // 调用UserDao的方法  
        User user = userDao.findUserById(1);  
                  
        System.out.println(user);  
    }  
}  

测试结果:

 

mybatis开发dao两种方法
 

mapper代理方法

1.编写mapper.java(UserMapper.java相当于java接口)

public interface UserMapper {  
    // 根据id查询用户信息  
    public User findUserById(int id) throws Exception;  
} 

2.编写mapper.xml(UserMapper.xml)

<mapper namespace="cn.itcast.mybatis.mapper.UserMapper">  
  
    <!--通过id查询用户表的记录 -->  
    <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">  
        SELECT * FROM USER WHERE id=#{value}  
    </select>  
  
</mapper> 

 

注意:

(1)在mapper.xml中namespace等于mapper接口地址

(2)mapper.java接口中的方法名和mapper.xml中statement的id一致

(3)mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致。

(4)mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。

3.编写测试类

public class UserMapperTest {  
  
    private SqlSessionFactory sqlSessionFactory;  
  
    // 此方法是在执行testFindUserById之前执行  
    @Before  
    public void setUp() throws Exception {  
        // 创建sqlSessionFactory  
  
        // mybatis配置文件  
        String resource = "SqlMapConfig.xml";  
        // 得到配置文件流  
        InputStream inputStream = Resources.getResourceAsStream(resource);  
  
        // 创建会话工厂,传入mybatis的配置文件信息  
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);  
    }  
      
    @Test  
    public void testFindUserById() throws Exception {  
        SqlSession sqlSession=sqlSessionFactory.openSession();  
          
        //创建UserMapper对象,mybatis自动生成mapper代理对象  
        UserMapper userMapper =sqlSession.getMapper(UserMapper.class);  
          
        //调用UserMapper的方法  
        User user=userMapper.findUserById(1);  
          
        System.out.println(user);  
          
        sqlSession.close();  
    }  
  
}  

测试结果:

mybatis开发dao两种方法

现在最常用的方法是第二种使用mapper代理的方法,不过第一种也有公司在用所以两种都要知道。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147232.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LARS回归算法的几何意义

    LARS回归算法的几何意义LARS算法的几何意义 1   LARS算法简介  Efron于2004年发表在AnnalsofStatistics的文章LEASTANGLEREGRESSION中提出LARS算法,其核心思想是提出一种新的solutionpath(求解路径),即在已经入选的变量中,寻找一个新的路径,使得在这个路径上前进时,当前残差与已入选变量的相关系数都是相同的,直到找出新的比当前残差相

    2022年6月29日
    38
  • Linux下rpm安装lrzsz

    Linux下rpm安装lrzsz下载yum-yinstallyum-utilsyumdownloader–resolve–destdir=/root/soft/lrzszlrzsz[root@instance-1apocjsh~]#yumdownloader–resolve–destdir=/root/soft/lszrzlrzszLastmetadataexpirationcheck:0:02:48agoonSat19Mar202211:22:41PMCST.lrzs

    2022年6月23日
    121
  • PC最好的dsd播放软件_安卓的dsd播放软件

    PC最好的dsd播放软件_安卓的dsd播放软件其实是Prismsound出的Sadie6….如果感觉难买的话可以试试hqplayer。个人尝试过的播放软件排名:①Sadie610无可挑剔,搭配8xr是PCHIFI最强数字源之一②Amarra8.5几近完美,略有差距,搭配Macmini或者MBP比较好,不建议iMac③Hqplayer8与amarra同级,但win平台比mac在数字输出还是略差一点,在优化良好的专机上可得8.5-9…

    2025年7月20日
    5
  • Hashtable 的实现原理

    Hashtable 的实现原理

    2021年5月10日
    220
  • 2020版Java视频教程|java零基础到就业全套视频教程线上免费观看,java免费教程直接看

    2020版Java视频教程|java零基础到就业全套视频教程线上免费观看,java免费教程直接看第一阶段:Java基础学习任何一门编程语言,首先要学习的是基础语法,开启Java学习的第一步,当然就是深入掌握计算机基础、编程基础语法,面向对象,集合、IO流、线程、并发、异常及网络编程,这些我们称之为JavaSE基础。当你掌握了这些内容之后,你就可以做出诸如:电脑上安装的迅雷下载软件、QQ聊天客户端、考勤管理系统等桌面端软件。第二阶段:数据库互联网最具价值的是数据,任何编程语言都需要解决数据存储问题,而数据存储的关键技术是数据库。MySQL和Oracle都是广受企业欢迎的数据库管理系统。Java

    2022年7月7日
    27
  • Linux系统定时任务「建议收藏」

    Linux系统定时任务定时任务CrondCrond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6linux操作系统之后,默认便会启动Crond任务调度服务。Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定…

    2022年4月16日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号