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代理的方法,不过第一种也有公司在用所以两种都要知道。

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 计算机的储存容量1kb等于多少byte,1M等于多少字节?

    计算机的储存容量1kb等于多少byte,1M等于多少字节?1M等于多少字节?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!1M等于多少字节?不是1M等于多少字节,是1MB等于多少字节。字节(Byte/bait/n.[C])是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。字节用符号“B”表示。MB(全称MByte):计算机中…

  • java-计算器模板及源码

    java-计算器模板及源码java-计算器模板及源码计算器实现了大部分基础功能:基本运算,菜单栏选项,并且拓展了普通型和科学兴选项等等,读者可以在此基础上进行修改和拓展。其他具体实现方法可以看源码,里面有详细的概述,代码框架清晰。读者在阅读和引用过程中,如有问题欢迎评论区留言和私信交流。运行环境:win10EclipseIDEforJavaDevelopers-2020-06下面是计算器的视图:importjava.awt.*;importjava.awt.event.ActionEvent;im

  • java语言_java好学吗?java是不是最难学的语言?

    java语言_java好学吗?java是不是最难学的语言?java好学吗?java是不是最难学的语言?对于一些刚接触java的朋友来说,可能会有这样的疑问,下面就来一起了解下吧。1、java好学吗?  从某些方面来说,java比较容易学,如果是大学毕业,大学计算机专业里大多开设了java基础课程,或者学过一点编程,学起java来也会轻松不少。即使是零基础也不用担心,java可以零基础授课,入门比较简单,难的是学深入,这不是一件容易的事。学习java…

  • java quartz_job.xml_java 使用quartz 定时xml 配置 与注解 以及注意事项

    java quartz_job.xml_java 使用quartz 定时xml 配置 与注解 以及注意事项xml配置实现:1.选择所需要的jar4.2.2.RELEASEorg.springframeworkspring-oxm${spring.version}org.springframeworkspring-jdbc${spring.version}org.springframeworkspring-webmvc${spring.version}org….

  • pycharm学生怎么免费使用_pycharm学生延期

    pycharm学生怎么免费使用_pycharm学生延期首先登陆到官网:点击Buy-&gt; 选择 DISCOUNTEDANDCOMPLIMENTARYLICENSES,你会看到下面的内容freeforstudentandteachers,opensourceproject非盈利组织50%等,在这里,如果你是学生的话,点进去有两种获取激活码的方式,一种是有校内邮箱,一种是ISICcard,国际学生证。一般在…

发表回复

您的电子邮箱地址不会被公开。

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