962148150 发表于 2016-11-24 09:19:29

Mybatis菜鸟自学(一)

  Mybatis学习
          
     最近mybatis火爆得爆棚,大有取代各类持久层框架的趋势;在这趋势催动下,我也耐不住寂寞开始自学,
  所发表全是自己学习心得
      一、什么是mybaits
         mybatis是基于普通sql查询,存储过程,以及高级映射的持久层框架
      二、mybatis核心对象
          大家都知道每一个框架都有一个核心对象,mybatis不列外,SqlSessionFactory就是mybatis核心对象
  ,该对象可以通过SqlSessionFactoryBuilder从xml配置文件,或者从Configuration累的习惯准备的实例中获
  得,我们主要学习从xml中获取
      三、怎么从xml中获取对应的核心对象
         1、准备mybatis的xml文件myBatis-config.xml
    <?xmlversion="1.0"encoding="UTF-8"?>
  <!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
  <configuration>
  <!-- 环境 -->
  <environmentsdefault="development">
     <environmentid="development">
        <transactionManagertype="JDBC"/>
        <dataSourcetype="POOLED">
        <propertyname="driver"value="com.mysql.jdbc.Driver"/>
        <propertyname="url"value="jdbc:mysql://localhost:3306/mybatis"/>
        <propertyname="username"value="root"/>
        <propertyname="password"value="admin"/>
        </dataSource>
        </environment>
     </environments>
  <!-- 包含所有映射器 -->
  </configuration>
         2、xml文件myBatis-config.xml的介绍
               environments 节点:mybatis的环境集合
               environment 节点:用于配置环境,id则为环境名称,environments中的default属性的值则从
              environment的id中选取,选取后则为默认的数据库运行连接环境
              transactionManager:事务处理区,默认的为jdbc的事务处理器
              dataSource :数据源的配置
           3、新建一个新的动态web工程,项目结构如下:
           
               导入mybatis的jar文件
              
               可以看到以上有log4j的jar文件,那么我们需要引入一个log4j.properties的资源文件,可以参考hibernate或者struts中会有相应文件的demo
           3、从xml中获取SqlsessionFactory对象
            String resource = "myBatis-config.xml";
           //解析数据源
           Reader reader = Resources.getResourceAsReader(resource);
          //获取绘画工厂
           SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
           我们可以将sessionFactory进行打印,则可以看到是否是获取到对应的SqlSessionFactory对象
   
   
  四、大家最关心的问题是怎么和数据库关联
           我们新建一个简单的pojo类,如Employee.java,这里getter和setter方法大家自己加上,我这里省去在数据库表中建立好对应的数据库,mybatis,并建立对应的表employee
           publicclass Employee {
                  private Longid;
                 private Stringname;
                 private Stringpassword;
            }
    要和数据库关联那我们就得有一个数据库的配置文件,在mybatis总通常用xxxMapper.xml进行配置,并一般情况卸载domain类中,如这里的EmployeeMapper.xml;配置如下:
  <?xmlversion="1.0"encoding="UTF-8"?>
  <!DOCTYPEmapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <!--  -->
  <mappernamespace="cn.mybatis.domain.EmployeeMapper">
     <!--
        parameterType:如果Sql需要传入参数,指传入参数类型
        resultType: 查询的数据需要封装为哪个对象,将返回
  ResultSet记录自动封装成指定类型的对象集(全类名)
      -->
     <selectid="selectBlog"parameterType="Long"resultType="cn.mybatis.domain.Employee">
        select * from Employee where id = #{id}   
     </select>
  <!-- <delete id=""></delete> -->
  <!-- <update id=""></update> -->
  <!-- <insert id=""></insert> -->
  </mapper>
   
  这里的namespace在以前是可以不需要的,在新版本中这个是必须的,通常命名规范为,包名+类名+Mapper  
  特别注意<select>标签这是mybatis的标签,同样可以看到我在下面添加了另外三种常用的标签;这样写完之后,大家看下select * fromBlog where id = #{id};以前我们的占位符都是?,这里用#{}切忌不能换成?
  写了mapper.xml那我们要用起来,则需要在原来myBatis-config.xml添加差早方式
  <!-- 包含所有映射器 -->
     <mappers>
        <mapperresource="cn/ycj/mybatis/domain/EmployeeMapper.xml"/>
     </mappers>
   添加在environments标签外
   
  那么执行持久化操作,
  先前我们已经拿到sessionFactory对象,通过该对象进行持久化操作
  //获取session
    SqlSession session =sessionFactory.openSession();
  //执行操作
  Blog blog=session.selectOne("selectBlog",1L);
  System.out.println(blog);
  session.close();
  这样便简单执行了一个查询方法;同理还有其他的crud操作
  <E> List<E> selectList(String statement, Object parameter);
  void close();
  void commit(boolean force);
  void commit();
  int delete(String statement, Object parameter);
  int update(String statement, Object parameter);
  int insert(String statement, Object parameter);
   <T> T selectOne(String statement, Object parameter);
  这里只列举了常用方法,其他方法我们可以在源码SqlSession接口中查看
   
   
   
   
<!-- Baidu Button BEGIN -->
页: [1]
查看完整版本: Mybatis菜鸟自学(一)