mybatis开始第1天

来源:互联网 发布:网络编程 什么语言 编辑:程序博客网 时间:2024/05/22 05:25
ibatis-->微软收购:mybatis 半自动 jdbc连接封装,但没有封装(ORM)sql(对配置文件的操作。.xml文件)
mybattis组成:
核心对象:SqlSessionFactory  SqlSession (缓存)
配置文件:mybatis.cfg.xml (数据源配置信息)相当于hibernate的hibernate.cfg.xml
多个类配置文件:user.xml (基于映射的配置文件)相当于hibernate的映射类文件
支持注解配置
       
顺序:
寻找一级缓存
寻找二级缓存
DB数据库/代理对象---->DB数据库(调用某一个方法的时候(getname()),才去查找数据库,)    
即时加载/延迟加载

SQL映射的XML文件:
- cache - 配置给定命名空间的缓存。
- cache-ref – 从其他命名空间引用缓存配置。
- resultMap – 最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加载你的对象。
- sql – 可以重用的SQL块,也可以被其他语句引用。
- insert – 映射插入语句
- update – 映射更新语句
- delete – 映射删除语句
- select – 映射查询语句


id  在命名空间中唯一的标识符,可以被用来引用这条语句。
parameterType  
将会传入这条语句的参数类的完全限定名或别名。
resultType 
 从这条语句中返回的期望类型的类的完全限定名或别名。注意集合情形,那应该是集合可以包含的类型,而不能是集合本身。
使用resultType或resultMap,但不能同时使用。


useGeneratedKeys
(仅对insert有用)这会告诉MyBatis使用JDBC的getGeneratedKeys方法来取出由数据(比如:像MySQL和SQL Server这样的数据库管理系统的自动递增字段)内部生成的主键。默认值:false。
keyProperty

(仅对insert有用)标记一个属性,MyBatis会通过getGeneratedKeys或者通过insert语句的selectKey子元素设置它的值。默认:不设置。


1.mybatis是一种持久层框架,也属于ORM映射。前身是ibatis。
2.相比于hibernate,hibernate为全动自动化,配置文件书写之后不需要书写SQL语句,但欠缺灵活,很多时候需要优化
3.mybiatis为半自动化,需要自已写SQL语句,需要自己定义映射。增加了程序员的一些操作,但带来了设计上的灵活,并且也支持hibernate的一些特性,如延迟加载,缓存,映射等
4.对数据库的兼容性比hibernate差。移植性不好,(缺点)但可编写灵活和高性能的SQL语句

mybatis所需JAR包:

1.mybatis-3.1.1.jar   mybatis核心jar包
2.数据库驱动包

mybatis.cfg.xml基本映射
<configuration>   
  <typeAliases>

<typeAliasalias="man" type="com.lovo.bean.ManBean"/><!--给类设置别名-->

  </typeAliases>
<environmentsdefault="dev">  <!--设置mybatis运行环境-->
        <environmentid="dev"> 
            <transactionManagertype="JDBC"></transactionManager> 
            <dataSourcetype="POOLED">  <!--设置驱动-->
                <propertyname="driver" value="com.mysql.jdbc.Driver" /> 
<property name="url" value="jdbc:mysql://localhost:3306/test
?characterEncoding=utf-8&amp;allowMultiQueries=true><!--url-->
                <propertyname="username" value="root" /> <!--用户名-->
                <propertyname="password" value="lovo" /> <!--密码-->
            </dataSource> 
        </environment> 
    </environments>  

SqlMapConfig.xml基本映射

<mappers>
<!--连接ORM映射文件-->
  <mapper resource="com/lovo/bean/ManBean.xml"/>
<!--配置ORM映射接口,使用注解配置-->
 <mapper class="com.lovo.dao.IUserDao"/>
  </mappers>
</configuration>  

ORM文件
<mapper>
<!-- 添加 操作 -->
<!--id为引用名,parameterType为参数类型-->
<insert id="add"parameterType="com.lovo.UserBean"

   useGeneratedKeys="true"keyProperty="id">

<!--#{}表示取出参数对象中对应的属性值-->
    insert into t_man(userName,phone)values(#{userName},#{phone})</insert>
useGeneratedKeys表示执行完添加语句后可以返回自动增长列的主键值 
keyProperty表示将返回的主键值填充当前对象的id属性
</mapper>

执行添加操作:

//读取文件

Readerreader = null;
  try {
reader= Resources.getResourceAsReader("mybatis.cfg.xml");
  } catch (IOException e1){e1.printStackTrace();}
//创建会话工厂
         SqlSessionFactory ssf = newSqlSessionFactoryBuilder().build(reader);
//创建会话
  session = ssf.openSession();

//执行添加操作,add为引用类配置文件中的id
session.insert("add",bean);
session.commit();//提交事务
session.close();//关闭连接

mybatis.xml命名空间

 在orm文件根目录下加入
<mapper namespace="user">

    设置命名空间

命名空间的作用:

更好地分类SQL语句块,更好维护
防止SQL语句块重名

在设置了命名空间后,那么在相应的程序调用中,方可以使用“命名空间 . 语句块名”进行调用相应的sql语句。


0 0
原创粉丝点击