栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

快速入门MyBatis

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

快速入门MyBatis

学习目标:

MyBatis

  • 学习MyBatis框架

1. 三层架构
  1. 界面层:和用户交互,调用业务逻辑层进行功能处理,显示请求的处理结果

  2. 业务逻辑层:接收传递的数据,完成业务逻辑;向上为界面层提供处理结果,向下问数据访问层要数据

  3. 数据访问层:和数据库交互,向上提供数据

    不可跨层

2.常用的框架SSM
  1. Spring:是整合其他框架的框架,核心是IOC(控制翻转)和AOP(面向切面编程),它由20多个模块构成(大佬)。
  2. SpringMVC:Spring家族的一员,专门用来优化控制器(Servlet)的,提供了极简的数据提交、数据携带、页面跳转等功能。
  3. MyBatis:是持久化层(就是数据访问层)的一个框架,用来进行数据库访问的优化,专注Sql语句,极简化JDBC的访问。
3.什么是框架

​ 它是一个半成品软件,将所有的公共的、重复的功能解决掉,帮助程序快速高效的进行开发,它是可复用的,可扩展的。

4.MyBatis框架
  1. 原是Apache的开源项目iBatis,2010迁移到Google code 改名为MyBatis,2013年迁移Git是基于Java的持久层框架。

  2. 主要解决的问题:

    减轻JDBC的复杂性,直接使用java对象表示结果数据,让开发者更专注SQL的处理,其他工作由MyBatis完成。

5.Mybatis框架结构

6.添加框架步骤
  1. )添加依赖

  2. )添加配置文件

    具体步骤:

    • 新建库、表
    • 新建maven项目,quickstart模板
    • 修改目录,添加缺失目录和属性
    • 修改pom.xml,添加Mybatis依赖、mysql依赖、添加资源文件指定
    • 在idear中添加数据库的可视化
    • 添加jdbc.properties数据库配置文件
    • 添加SqlMapConfig.xml文件(MYbatis的核心配置文件)
    • 添加完成表增删改查的功能配置文件StudentMapper.xml
    • 创建测试类 测试
7.代码实现
  1. 配置MyBatis核心配置文件

    
    
    
    
        
        
    
    
        
    
            
    
                
    
                
    
                    
                    
                    
                    
                
            
    
    
    
    
    
        
    
        
            
        
    
    
  2. 配置mapper.xml增删查改文件

    
    
    
    
    
     
        
            select id,name,email,age from student;
        
        
            select id,name,email,age from student
            where name like '%${name}%';
        
    
        
            insert into student (name,email,age) values (#{name},#{email},#{age});
        
    
        
            delete from student where id = #{id};
        
    
        
            update student set name = #{name},email=#{email},age=#{age}
            where id=#{id};
        
    
    
  3. 使用代码测试 完成查询所有

            //使用文件流读取核心配置文件SqlMapConfig.xml
            InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
            //创建SqlSessionFactory工厂
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            //取出SqlSession对象
            SqlSession sqlSession = factory.openSession();
            //完成查询
            List list = sqlSession.selectList("jv.getAll");
    //        list.forEach(student -> System.out.println(student));//lambda表达式
            for (Object o : list) {
                System.out.println(o);
            }
            //关闭SqlSession
        sqlSession.close();
     
  4. 切记:所有的增删改的操作后都必须手工提交事务!!sqlSession.commit();

  5. 8.MyBatis对象分析
    1. Resources类

      解析SqlMapConfig.xml文件,创建出相应的对象

      InputStream in = Resources.getResourceAsStream(“SqlMapConfig.xml”);

    2. SqlSessionFactory接口

      创建SqlSessionFactory工厂对象

      SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);

    3. SqlSession接口

      完成sql功能的接口

    9.测试注解
    1. @Test //测试方法
    2. @Before //在Test方法执行前先执行的代码
    3. @After // 在Test方法执行后先执行的代码
    10.实体类(pojo)注册别名
    1. 单个注册

      
          
      
              
          
      实体类别名为student
      
    2. 批量注册

         
      
              
          
      

      使用别名注册后再map中就只用写别名:

      
          select 
          from users
          where id in
              
                  #{id}
              
      
      

      其中参数:

      • collection:指定入参的类型,List集合用list、Map集合用map、数据用array.
      • item:每次循环出来的值或对象
      • separator:多个值或对象或语句之间的分隔符
      • open:整个循环外的前括号
      • close:整个循环外的后括号

      注意:多条语句一次性执行一定要开启数据库批处理(如批量更新),在properties数据库配置文件中url上添加&allowMultiQueries=true

    18.指定参数位置

    ​ 如果入参是多个的,可以通过指定参数位置进行传参,是实体类包含不住的条件(实体类只能封装住成员变量的条件),如果某个成员变量要有区间范围类的判断,或者有两个值进行处理则实体类包不住,如:查询指定日期范围内的用户信息。

    //查询指定日期范围的用户信息
    List queryByBirthday(Date begin,Date end);
    

    ​ 用arg0|arg1来去,默认第一个入参是0一次往后

    
            select 
            from users
            where birthday between #{birBegin} and #{birEnd};
        
    
    20.返回值是map

    ​ 如果返回的数据实体类无法包含,可使用map返回多张表中的若干个数据,返回后这些数据之间没有任何关系就是object类型;返回的map中key就是列名或别名。

    Map getReturnMap(Integer id);//接口
    //测试方法中
    Map returnMap = mapper.getReturnMap(15);
    System.out.println(returnMap.get("username"));//username就是列名
    
    
    
    转载请注明:文章转载自 www.mshxw.com
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号