Mybatis框架学习笔记(二)

几种设计模式

工厂模式:创建对象的过程不再使用new,而是交给工厂来完成,降低了类与类之间的依赖关系(解耦),使得每次创建对象的过程不需要重新编译和部署。例如,生产一台电脑,只需要向工厂提货而不需要关注电脑的创造过程。
构建者模式:使用多个简单的对象一步一步构建成一个复杂的对象。
工厂模式关心创造的对象的整体,而构建者模式关注创造对象的过程,由简单的对象开始一步步地构造出复杂的对象。
代理模式:不修改原代码的基础上对原有的方法的功能进行增强。

Mybatis基于注解的开发配置

和基于xml的开发配置不同,在基于注解进行开发配置的时候,xml文件只需要保留主配置文件,其他每个dao独立的xml配置文件都删掉,如下图所示:
在这里插入图片描述
在这里插入图片描述
在environments标签的后面,对映射配置文件的位置进行配置。映射配置文件指的是每个dao独立的配置文件。class后面填写被注解的dao的全限定类名。

    <mappers>
        <mapper class="全限定类名"></mapper>
    </mappers>

配置文件写好后,在dao接口中的方法上使用@select注解,在注解后面的括号中写sql语句。
在这里插入图片描述
配置结束后,即可以使用mybatis执行数据库的相关操作。新建一个测试类,测试mybatis的curd操作。

  public static  void  main (String [] args) throws IOException {
        //读取配置文件,生成字节输入流
        InputStream is = Resources.getResourceAsStream("sqlconfig.xml");
        //获取SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
        //获取SqlSession对象
        SqlSession sqlSession = factory.openSession();
        //获取dao的代理对象
        Iuserdao  userdao = sqlSession.getMapper(Iuserdao.class);
        //执行查询所有方法
        List<User> users = userdao.findAll();
        for(User user : users){
            System.out.println(user);
        }
        //释放资源
        sqlSession.close();
        is.close();
    }

自定义Mybatis开发的流程

1、使用SqlSessionFactoryBuilder类接收SqlMapConfig.xml文件,构建出SqlSessionFactory对象。
2、SqlSessionFactory读取SqlMapConfig.xml文件当中连接数据库和mapper映射信息,用来生产出真正操作数据库的SqlSession对象。
3、SqlSession对象具有两大作用。①生成接口代理对象,②定义通用的增删改查方法。
①生成接口代理对象。第一步,先用SqlSessionFactory读取到的数据库连接信息创建Connection对象。第二步,通过jdk代理模式创建出代理对象,作为SqlSession对象中的getMapper方法的返回值。这里的主要工作是在创建代理对象时第三个参数处理类里面得到sql语句,执行对应CURD操作。
②定义通用的增删改查方法。首先,用SqlSessionFactory读取的数据库连接信息创建出jdbc的Connection对象。接着,直接得到sql语句,使用jdbc的Connection对象进行对应的CURD操作。
4、封装结果集。对返回的数据库结果集进行封装,变成java对象返回给调用者,因此我们必须知道调用者返回的数据类型。

Mybatis中的增删改查

一、保存用户
1、在进行curd操作之前,新建User类,补全getter和setter方法。
在这里插入图片描述
2、在dao接口中新增保存用户的方法,如下图所示:
在这里插入图片描述
3、如果是基于xml文件进行配置,在dao的映射配置文件当中增加以下配置:

<mapper namespace ="dao的全限定类名">
    <insert id = "方法名" parameter="参数类型的全限定类名">
        insert into user(username,address) values(#{username},#{address});
    </insert>
</mapper>

4、新建测试类,进行数据库添加操作。
二、更新用户。
1、在dao接口中新增更新用户的方法,如下图所示:
在这里插入图片描述
2、如果是基于xml文件进行配置,在dao的映射配置文件当中增加以下配置:

<mapper namespace ="dao的全限定类名">
    <insert id = "方法名" parameter="参数类型的全限定类名">
        insert into user set username=#{username},address=#{address} where id = #{id};
    </insert>
</mapper>

3、进行测试。
三、删除
1、在dao接口中添加删除用户的方法,如下图所示:
在这里插入图片描述
2、如果是基于xml文件进行配置,在dao的映射配置文件当中增加以下配置:

<mapper namespace ="dao的全限定类名">
    <delete id ="方法名" parameterType="参数类型的全限定类名">
        delete from User where id = #{id};
    </delete>
</mapper>

四、模糊查询
1、在dao中新增模糊查询的方法,如下图所示:
在这里插入图片描述
2、如果是基于xml文件进行配置,在dao的映射配置文件当中增加以下配置:
在这里插入图片描述
3、测试:
在这里插入图片描述
五、保存操作的细节
新增用户之后,同时还要返回当前用户新增的id值。因为id是通过数据库的自动增长来实现的,所以就相当于我们要将自增长的值返回。xml文件中配置如下:
在这里插入图片描述
编写测试的方法,执行:
在这里插入图片描述

测试结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值