Mybatis_05_第一个Mybatis程序

第一个Mybatis程序

  • 开发步骤

    1.新建一个Java普通工程,因为Mybatis框架封装了JDBC,写一个Main方法即可测试

    2.引入Mybatis的 jar包

    - mybatis-3.5.6.jar  Mybatis核心jar包
    
    - mysql-connector-java-8.0.18.jar 驱动jar包
    
    1. 从 XML 中构建 SqlSessionFactory

      从这句话中可以提取出以下信息:

         - Mybatis中一定有一个XML文件
      
         - Mybatis中一定有一个类叫做 SqlSessionFactory
      
         - SqlSessionFactory对象的创建依赖XML文件
      

    4.创建main方法,写以下代码:

      - 通过第一行代码可以知道MMybatis有一个配置文件叫做  mybatis-config.xml,并且该文件放在类路径之下。
    
      - Mybatis默认从类的根路径下作为起点开始查找资源. 什么是类路径 bin是类的根路径,在项目中 Src可以等同看做类的根路径
    
      - 在项目的src根路径下新建一个Myatis-config.xml文件,修改: String resource = "mybatis-config.xml";
        
         String resource = "org/mybatis/example/mybatis-config.xml";
    
     - 
      InputStream inputStream = Resources.getResourceAsStream(resource);
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
    1. 编写Mybatis-config.xml核心配置文件

      • Mybatis核心配置文件主要编写连接数据库的信息,和SQL语句配置文件的路径。

      • 通过Mybatis-config.xml核心配置文件中的以下代码可以看出,Mybatis还有另外一个文件,是专门用来编写sql语句的,并且该配置文件也是从类的根路径下开始查找

    2. 编写Sql映射文件, 提供一个专门用来配置sql语句的文件, 这种文件一般叫做sql映射文件(SqlMapper.xml)

      • 在类的根路径(src)下新建一个SqlMapper.xml

      • 修改Mybatis-config.xml核心配置文件中的 ,文件和路径修改为相应的路径文件。

      • 编辑 SqlMapper.xml 文件

        <!--id属性具有唯一性,是本条Sql语句的唯一标识,本条Sql语句的Id用来传给Java程序,就代表着将本条SQL语句传给了JAVA程序-->
        <!--resultType属性,告诉Mybatis 所查询出的数据最终封装的类型,要写全类名-->
        <!--查询结果集的列名 要和 javaBean的属性名对应上,如果不对应的话,需要通过SQL语句的 AS 关键字给数据库中字段名取别名,使数据库中的字段名和实体类中的属性名相一致--> 
        
          <select id="getUserInfo" resultType="com.shige.controller.User">
                      select username as userName,email as userEmail,userpwd as userPwd from t_userinfo;
          </select>
        
  1. 关于Mybatis的核心API SqlSession对象

    SqlSession sqlSession = sqlSessionFactory.openSession(); // 开启事务

     // 执行Sql语句
    
      执行Sql语句 1
      执行Sql语句 2
      执行Sql语句 3
          .....
    
      sqlSession.commit();
      
      sqlSession.roback();
    
      sqlSession.close();
    

8.查询所有的用户信息

   - 程序员需要告诉Mybatis框架什么信息,Mybatis才能自动创建对象,并且自动将查询到的结果集的每列值放到Java对象中对应属性上。

         1. 在Sql映射文件<select id="getUserInfo"   resultType="com.shige.controller.User" > 查询语句  </select> 标签的属性中填对应的信息 

             <!--id属性具有唯一性,是本条Sql语句的唯一标识,本条Sql语句的Id用来传给Java程序,就代表着将本条SQL语句传给了JAVA程序-->
             <!--resultType属性,是告诉Mybatis 所查询出的数据最终封装的类型,要写全类名。 例如查询用户信息,那么最终数据的封装类型可能就是User-->
             <!--查询结果集的列名 要和 javaBean的属性名对应上,如果不对应的话,需要通过SQL语句的 AS 关键字给数据库中字段名取别名,使数据库中的字段名和实体类中的属性名相一致--> 


        2.  使用sqlSession对象执行selectList()方法,把Sql映射文件中的查询语句id赋值给 selectList("getUserInfoSql"); 
            List<User> userList=sqlSession.selectList("getUserInfoSql");    // 查询所有的用户信息,返回List集合,List集合中存储用户对象
  • 整合代码

    
         import org.apache.ibatis.io.Resources;
         import org.apache.ibatis.session.SqlSession;
         import org.apache.ibatis.session.SqlSessionFactory;
         import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
         import java.io.IOException;
         import java.io.InputStream;
         import java.util.List;
    
         /**
          *  第一个Mybatis程序
          */
         public class Test01 {
             public static void main(String[] args)  {
    
                 //创建空SqlSession对象
                 SqlSession sqlSession =null;
    
                 try {
    
                     //定义mybatis-config.xml 核心配置文件的文件路径
                     String resource = "mybatis-config.xml";
    
                     //将该路径传给字节输入流,字节输入流读取该核心配置文件
                     InputStream inputStream = Resources.getResourceAsStream(resource);
    
                     //通过SqlSessionFactoryBuilder().build()方法,将该字节输入流解析成一个SqlSessionFactory对象。
                     SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
                     //通过 SqlSessionFactory.openSession()方法,可以获得一个SqlSession对象。
                     //本行代码等同于 connection.setAutoCommit(false),事务自动提交机制关闭
                     //可以这样去理解 SqlSession 等同看做 Connection+Statement,专门用来执行sql语句的一个对象
                      sqlSession = sqlSessionFactory.openSession();
    
    
                      //do work 执行核心业务逻辑
                     //查询所有的用户信息,返回List集合,List集合中存储用户对象
                      List<User> userList=sqlSession.selectList("getUserInfoSql");
    
                      //遍历集合输出用户信息
                     for (User user:userList) {
                         System.out.println(user);
                     }
    
                     // 没有异常则事务提交
                     sqlSession.commit();
                 } catch (IOException e) {
                     //遇到异常之后回滚
                     if( sqlSession!=null){
                         sqlSession.rollback();
                     }
    
    
                     e.printStackTrace();
                 }finally {
                     //释放资源
                     if(sqlSession!=null){
                         sqlSession.close();
                     }
    
                 }
    
    
             }
         }
    
    
    
    
    
    
posted @ 2021-04-25 10:36  失昼  阅读(42)  评论(0)    收藏  举报