mybatis的出现原有:

  解决使用JDBC的缺点:

    1.代码比较多,开发效率低

    2.需要关注Conntion。Statement,ResultSet 对象创建和销毁

    3.对ResultSet 查询的结果,需要自己封装为List

    4.重复的的硬编译比较

    5.业务代码和数据库的操作混在一起

  

mybatis框架

  一个框架,早期叫做ibatis,代码在github

mybatis 是MyBatis SQL Mapper Framework for Java (sql映射框架)

1)sql mapper :sql映射               :

  可以把数据表中的一行数据 映射为一个对象。

  一行数据可以看成是一个Java对象。操作这个对象,就相当于操作表中的数据

2)Data Access Objects (Daos) :数据访问 , 对数据库执行增删改查。

 

mybatis提供了哪些功能:

1.提供了创建Conntion,Statement,ResultSet的能力,不用开发人员创建这些对象了

2.提供了执行SQL语句的能力, 不用你执行sql

3.提供了循环sql,把sql的结果转为Java对象,List集合的能力

  while(rs.next()){

    student stu = new student();

    stu.setId(rs.getInt("id"));

             stu.setName(rs.getString("name"));

    stu.setAge(rs.getInt("age"));

    //从数据库取出数据转为Student 对象,封装到List集合

    stuList.add(stu);

   }

4.提供了关闭资源的能力,不用你关闭Conntion,Statement,ResultSet

我们开发人员做的事:提供SQL语句

最后是: 开发人员提供sql语句--mybatis处理sql---开发人员得到List集合或Java对象(表中的数据)

总结:mybatis是一个sql映射框架,提供的数据库的操作能力。增强的JDBC,使用mybatis让开发人员集中精神写sql就可以了,不用重复劳动Conntion,Statement,ResultSet的创建

 

实现步骤:

1.新建Student表加入数据

2.加入Maven的mybatis坐标,mysql驱动的坐标

3.创建实体类,student--保存表中的一行数据的 //定义属性名要和sql表的字段一致

4.创建持久层的dao接口,定义操作数据库的方法

5.创建一个mybatis使用的配置文件叫做sql映射文件:写sql语句的。一般一个表一个sql映射文件。这个文件是XML文件。

  1)在接口所在的目录中

  2)文件名称和接口保持一致。

       3)把mybatis官网中的入门探究sql的映射拷贝过来,

      

<?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">
<mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>


<select id ="selectstudents" resulType="">
        select id,name,email,age from student order by id
</select>

<!--
       id:你要执行的sql语法的唯一标识,mybatis会使用这个id的值来找到要执行的sql语句
           可以自定义,但是要求你使用接口中的方法名称。
       resulType:表示结果类型的,是sql语句执行后得到Resulset,遍历这个resultset的到java对象的类型。
           ""后面的值写的是类型的全限定名称,相当于包名加类名

   >
剖析源代码:
  mybatis-3-mapper.dtd:是约束文件,作用:限制,检查在当前文件中出现的标签,属性必须符合mybatis的要求
  mapper:是当前文件的根标签,必须的
  namespace:叫做命名空间,唯一值得,可以是自定义的字符串。要求你使用dao接口的全限定名称。
    在当前文件中,可以使用特定的标签,表示数据库的特定操作。
    <select>:表示执行查询
    <update>:表示更新数据库的操作,就是在<update>标签中写的事update sql语句
    <insert>:便是插入,放的是
    <delete>:删除
   <!--
       id:你要执行的sql语法的唯一标识,mybatis会使用这个id的值来找到要执行的sql语句
           可以自定义,但是要求你使用接口中的方法名称。
   >

 

 6.创建mybaits的主配置文件:

  一个项目就一个主配置文件。

  

<?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">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>



剖析源代码:
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">

    <environments default="development">
        environments:一个数据库信息的配置,环境
        default:告诉mybatis使用哪个数据库的拦截信息,也就是访问哪个数据库
    <environment id="development">
        id:一个唯一值,自定义,表示环境的名称。
    <transactionManager type="JDBC"/>
        type:JDBC(表示使用jdbc中connection对象的commit,rollback做事务处理)
    <dataSource type="POOLED">
         dataSource:表示数据源,连接数据库的
         type:表示数据库的类型,pooled表示使用连接池
     <property name="driver" value="${driver}"/>
         数据库驱动类名
     <property name="url" value="${url}"/>
         连接数据库的url字符串
     <property name="username" value="${username}"/>
         访问数据库的用户名
     <property name="password" value="${password}"/>
         密码
         driver,url,username,password是固定的,不能自定义。
        <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>
         <mappers>:sql mapper(sql映射文件)的位置
         <mapper resource="org/mybatis/example/BlogMapper.xml"/>:从类路径开始的路径信息。
             

主配置文件提供了数据库的连接信息和sql映射文件的位置信息

7.创建使用mybaits类:

  通过mybaits访问数据库

public class MyApp{
     public static void main(String [] args )throws IOException{
         //访问mybatis读取student数据
         //1:定义mybatis主配置文件的名称,从类路径的根开始(target/clasess)
     string config ="mybatis.xml";
         //2:读取这个config表示的文件
         InputStream in = Resources.getResourceAsStream(config);
         //3:创建了SqlSessionFactoryBuilder对象
         SqlSessionFactoryBuilder builder = new sqlSessionFactorBuilder();
         //4:创建SqlSessionFactory对象
         SqlSessionFactory factory = builder.build(in)
         //5:获取SqlSession对象,从SqlSessionFactory中获取SqlSession
         SqlSession  SqlSession= factory.openSession();
         //6:指定要执行的sql语句的标识。sql映射文件中的namesapce+"."+标签的id值
         String sqlId="     "
             
          //7:执行sql语句
          List<student> studentlist = sqlsession.selectList(sqlId);
          //8:输出结果
         for(student stu : studentList){
             system.out.println("查询学生="+stu);
         
         }
          //9:关闭SqlSssion对象
             sqlSession。close();
     }
}