• 【mybatis基础】


    mybatis
        概念:
            mybatis是一款基于Java的优秀的持久层框架,使用者只用关注SQL语句而不需要费力地去加载驱动、创建链接、创建statement等繁杂的过程。
            mybatis通过XML文件或者注解将各种statement配置起来,并通过Java对象和statement中的sql语句进行映射生成最终的执行sql语句
            最后mybatis框架执行SQL语句并将结果映射为Java对象返回,采用了ORM解决了实体和数据库映射的问题,对JDBC进行了封装,屏蔽了JDBC中API底层访问细节,是我们越过JDBC中的API,就可以完成对数据库的持久化操作。

    开发步骤:
        添加mybatis坐标
        创建相关数据表
        编写相关实体类
        编写映射文件xxxMapper.xml
        编写核心文件sqlMapConfig.xml

        编写测试类

     核心文件层级关系:

    configuration配置:

       properties属性       

       setting设置            

       typeAliases 类型别名

       typeHandlers 类型处理器                       

       objectFactory 对象工厂                           

    plugings 插件          

    environment:环境      

       ①environment 环境变量                        

       ②transactionManager 事务管理器          

       ③DataSource 数据源         

           databaseldProvicder 数据库厂商标识                      

           mappers映射器


        
        mybatis的代理实现
            测试
                @Test
    public void testProxyDao() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //获得MyBatis框架生成的UserMapper接口的实现类
      UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.findById(1);
        System.out.println(user);
        sqlSession.close();
    }
            要求
                Mapper 接口开发需要遵循以下规范:
                
                ①) Mapper.xml文件中的namespace与mapper接口的全限定名相同
                
                ② Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
                
                ③ Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同
                
                ④Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
        映射文件深入
            动态SQL语句编辑
                

                foreach
                    循环执行sql的拼接操作,例如:SELECT * FROM USER WHERE id IN (1,2,5)。
                    
                foreach标签的属性含义如下:

    标签用于遍历集合,它的属性:

    •collection:代表要遍历的集合元素,注意编写时不要写#{}

    •open:代表语句的开始部分

    •close:代表结束部分

    •item:代表遍历集合的每个元素,生成的变量名

    •sperator:代表分隔符
                sql片段抽取:
    Sql 中可将重复的 sql 提取出来,使用时用 include 引用即可,最终达到 sql 重用的目的
                    



            MyBatis映射文件配置: