2021-07-22 mybatis快速入门 学习总结

本文介绍了MyBatis的快速开发和代理模式的区别,包括普通开发步骤,如创建数据表、编写实体类、映射文件和配置文件。详细解释了DAO层实现原理,涉及Mapper标签、命名空间、事务管理和资源释放。同时,文章涵盖了分页插件的使用方法,以及自定义类型处理器的配置和应用。
摘要由CSDN通过智能技术生成

2021.7.22 mybatis快速入门 学习总结

  • 今天学习的mybatis快速开发和代理开发(以后一般用这个方法进行开发)的区别:
    - 快速开发mapper标签的命名空间名字自己取,不需要与要动态实现的接口类名字一样,甚至不需要有接口;
    - 代理开发需要有要动态实现的接口,mapper标签的命名空间名要与接口的一致,其余的限制条件见笔记下半部分。

普通开发步骤

1.导入mybatis依赖包(主要是数据库驱动和mybatis)
2.创建user数据表
3.编写User实体类
4.编制映射文件UserMapper.xml文件

  • 可能出现问题:约束头最后一个http显示未注册
  • 解决方法:IDEA中:file->seeting->language&frameworks->schemas and dtds->点中间下面有很多http开头的链接那块的加号,将报红的那个http的链接(http://mybatis.org/dtd/mybatis-3-mapper.dtd)添加进去即可。

5.编制核心配置文件sqlMapConfig.xml文件
6.编写测试类(主要步骤如下)

  • 加载配置文件
  • 获得session工厂
  • 获得session回话对象
  • 执行操作(查询操作,其他操作需要提交事务),参数:namespace+id
  • 打印数据(对数据进行处理)
  • 释放资源
		//加载配置文件(查询操作)
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        //获得session工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获得session回话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行操作 参数:namespace+id
        List<User> userList = sqlSession.selectList("userMapper.findAll");
        //打印数据
        System.out.println(userList);
        //释放资源
        sqlSession.close();
public void test2() throws IOException {
        //模拟传入的user对象(插入操作)
        User user1 = new User();//id是自增的,不需要复制赋值
        user1.setUsername("zhaoshan");
        user1.setPassword("acd");
        //加载配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        //获得session工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获得session回话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行操作 参数:namespace+id
        sqlSession.insert("userMapper.save",user1);
        //必须要提交事务才能刷新数据表
        sqlSession.commit();
        //释放资源
        sqlSession.close();
    }

相关设置

  1. 映射配置文件中增删改查的设置

    mapper.xml文件中进行修改的设置

  2. 核心配置文件设置

核心配置文件的常用配置

  • 定义别名第二种方法:扫包,默认包下的类别名为类的名称或者是首字母小写的类的名称
  • 具体代码
<typeAliases>
<package name="com.itheima.domain"></package>
</typeAliases>

dao层实现原理

代理模式开发(需要满足的条件)

需要满足的条件
形象描述

  • 备注:代理模式之后开发步骤转变为:首先在接口里面写抽象的方法,之后在配置文件里面用相关语句进行实现,其测试类中代码如下:
		//加载配置文件
 		InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
 		//获得工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获得session会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //UserMapper是自定义的接口对象,里面有映射配置文件中包含sql语句的方法
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user1 = mapper.findById(7);
        System.out.println(user1);
//      sqlSession.commit(); 若操作需要改变数据库中的数据,需要提交事务
        sqlSession.close();
  • 动态sql语句:if、foreach,写在<where /where>标签里面
  • sql语句的抽取,<sql /sql>
  • 如果select等字句有参数的话,用#{}来进行数据引用,如果引用的参数是对象,大括号中是对象实体的属性名
  • 知识总结
  • 在这里插入图片描述
  • 分页插件的使用
    • 首先导入PageHelper的jar包;
    • 在核心配置文件中配置分页助手;
 `<!--配置分页助手-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <property name="dialect" value="mysql"/>
        </plugin>
    </plugins>`
  • 在测试类中就可以利用分页助手插件设置分页参数或者获取分页信息
//设置分页参数 当前页+每页显示条数
        PageHelper.startPage(2,3);
        List<User> users = mapper.findAll();
        for(User user:users){
            System.out.println(user);
        }

        //获取分页信息
        PageInfo<User> pageInfo = new PageInfo<User>(users);
        System.out.println("当前页为:" + pageInfo.getPageNum());
        System.out.println("每页显示条数" + pageInfo.getPageSize());
        System.out.println("总页数:" + pageInfo.getPages());
        System.out.println("前一页为" + pageInfo.getPrePage());
        System.out.println("下一页为" + pageInfo.getNextPage());
        sqlSession.close();
  • typehandlers标签(用于Java和数据库中数据之间类型的转换)
    • 首先定义一个转换类,该类要继承BaseTypeHandler<T>抽象类,重新其中的四个方法,第一个方法是将java中的数据类型转为数据库中的数据类型后存入数据库,其余三个方法都是将数据库中的数据类型转换为java中的数据类型后取出来展示
    • 之后在核心配置文件中配置类型处理器,代码如下:
      <typeHandlers> <typeHandler handler="com.itheima.handler.DateTypeHandler"></typeHandler> </typeHandlers>
    • 最后可在测试代码中使用该转换器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值