Mybatis概述及入门

mybatis

  1. 三层架构:

    表现层: 
    		是用于展示数据的
          
    业务层: 
    		是处理业务需求
          
    持久层: 
    		是和数据库交互的(mybatis属于持久层)
    
  2. 持久层技术解决方案:

    JDBC技术:
    	Connection
        PrepareStatement
        ResultSet
          
          
    Sping的JdbcTemplate:
    		Sping中对jdbc的简单封装
          
          
    Apache的DBUtils:
    		它和Sping的JdbcTemplate很想, 也是对Jdbc的简单封装
          
          
    以上这些都不是框架
        JDBC是规范
        Sping的JdbcTemplate和Apache的DButils都只是工具类
    
  3. mybatis的概述:

    mybatis是一个持久层框架, 用java编写的.
    它等装了 jdbc操作的很多细节, 是开发者只需要关注sql语句本身, 而无需关注注册驱动, 创建连接等繁杂过程
    它使用了ORM思想实现了结果集的封装.
      
      
    ORM:
    	Object Relational Mapping 对象关系映射
        简单的说:
    		  就是把数据库表和实体类及实体类的属性对应起来
              让我们可以操作实体类就实现操作数据库表
                
              user								User
              id								userId
              user_name							userName
                
                
        实体类中的属性和数据库表的字段名称保持一致.
              user								User
              id								id
              user_name							user_name
    
  4. mybatis入门配置:

    mybatis主配置文件不能删除:
     * SqlMapConfig.xml:
    	<?xml version="1.0" encoding="UTF-8"?>
             <!DOCTYPE configuration
                      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
                      "http://mybatis.org/dtd/mybatis-3-config.dtd">
    
              <!--mybatis主配置文件-->
              <configuration>
                  <!--配置环境-->
                  <environments default="mysql">
                      <!--配置mysql的环境, 这个名要跟上面保持一致-->
                      <environment id="mysql">
                          <!--配置事务的类型-->
                          <transactionManager type="JDBC"></transactionManager>
                          <!--配置数据源(连接池)-->
                          <dataSource type="POOLED">
                              <!--配置链接数据库的4个基本信息-->
                              <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                              <property name="url" value="jdbc:mysql://127.0.0.1:3306/eesy_mybatis" />
                              <property name="username" value="root" />
                              <property name="password" value="123456" />
                          </dataSource>
                      </environment>
                  </environments>
    
                  <!--
                      指定映射配置文件的位置, 映射配置文件指的是每个dao独立的配置文件
    
                      如果是用注解来配置的话, 此处应该使用class属性指定被注释的dao全限定类名
                  -->
                  <mappers>
                	  <!-- xml配置 -->
                      <!--<mapper resource="com/xiaoge/dao/UserDao.xml"></mapper>-->
                      
                			<!-- 注解配置 -->
                	 <mapper class="com.xiaoge.dao.UserDao"></mapper>
                  </mappers>
    
              </configuration>
    
    xml配置:
       * UserDao.xml:
             <?xml version="1.0" encoding="UTF-8"?>
              <!DOCTYPE mapper
                      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                      "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
              <!--namespace写全限定类名-->
              <mapper namespace="com.xiaoge.dao.UserDao">
              <!--配置查询所有-->
              <!--id写方法的名称-->
              <!--resultType, 执行该sql以后, 获取的结果封装在User类中-->
              <select id="findAll" resultType="com.xiaoge.domain.User">
                  select * from user
              </select>
              </mapper>      
               
               
    注解配置(在接口方法上直接添加sql语句):
    	import com.xiaoge.domain.User;
        import org.apache.ibatis.annotations.Select;
    
        import java.util.List;
    
        /**
         * @Author: 潇哥
         * @DateTime: 2020/3/2 下午4:02
         * @Description: 用户的持久层接口
         */
        public interface UserDao {
    
            /**
             * 查询所有操作
             * @return
             */
            @Select("select * from user")
            public List<User> findAll();
    
        }
    
  5. mybatis的入门:

    mybatis的环境搭建
      	第一步: 创建maven工程并导入坐标
        第二步: 创建实体类和dao接口
        第三步: 创建Mybatis的主配置文件
          			SqlMapConfig.xml
        第四步: 创建映射配置文件
          			UserDao.xml
        环境搭建的注意事项:
    		第一个: 创建UserDao.xml 和 UserDao.java是名称是个人习惯, 在Mybatis中它把持久层的操作接口名称和映射文件也叫做: Mapper
             			所以: UserDao 和 UserMapper是一样的
                      
            第二个: 在idea中创建目录的时候, 它和包是不一样的, 包在创建时: com.xiaoge.dao他是三级结构
              			目录在创建时: com.xiaoge.dao是一级目录
                      
            第三个: mybatis的映射配置文件位置必须和dao接口的包结构相同
              
            第四个: 映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
              
            第五个: 映射配置文件的操作配置(select), id属性的取值必须是dao接口的方法名
              
            当遵从了第三,, 五点之后, 在开发中就无需在写dao的实现类.
      
              
              
    mybatis的入门案例:        
          	第一步: 读取配置文件
            InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
    
    
          	第二步: 创建SqlSessionFactory工厂
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
          	SqlSessionFactory factory = builder.build(is);
    
    
          	第三步: 使用工厂生产一个SqlSession对象
            SqlSession session = factory.openSession();
    
    
          	第四步: 使用SqlSession创建Dao接口的代理对象
            UserDao userDao = session.getMapper(UserDao.class);
    
    
          	第五步: 使用代理对象执行方法
            List<User> users = userDao.findAll();
    
            for (User user : users) {
              System.out.println(user);
            }
    
    
          	第六步: 释放资源
            session.close();
          	is.close();
    	
    
            注意事项:
            不要忘记在映射配置中告知mybatis要封装到那个实体类中
            配置的方式: resultType="指定实体类的全限定类名"
                
            明确:
    			我们在实际开发中, 都是越简便越好, 所以都是采用不写dao实现类的方式. 不管使用XML还是注解配置. 但是Mybatis它是支持写dao实现类的.
                      
    
发布了323 篇原创文章 · 获赞 104 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/zsx1314lovezyf/article/details/104697177