• SSM(一)Mybatis基础


    1.持久化与ORM

    持久化是数据在内存与硬盘间相互转化的过程

    ORM即对象关系映射

    程序员使用面向对象的思维方式处理数据,每个对象都是一个pojo。但是保存数据的时候,却以关系型数据库的方式存储。所以在持久化的过程中编码会很复杂,比如jdbc的存取数据——要自己拆分每个字段,然后存入数据库,或者从数据库拿到ResultSet然后转变成泛型。

    而对象关系映射使得程序变得简单了。通过xml配置,发条sql就能拿到pojo泛型,或者给个对象就能存入数据库。

    2.mybatis基本构成

    SqlSessionFactoryBuilder(构建器):生成SqlSessionFactory(工厂接口)

    SqlSessionFactory:生成SqlSession(会话)

    SqlSession:可以直接发送SQL并返回结果,也可以获取Mapper的接口

    SQLMapper:由Java接口和XML文件(或注解)组成,负责发送SQL执行并返回结果

    3.mybatis大配置

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration
     3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 <configuration>
     6     <!--引入 jdbc.properties-->
     7     <properties resource="jdbc.properties"/>
     8     <settings>
     9         <setting name="logImpl" value="LOG4J"/>
    10         <!--<setting name="lazyLoadingEnabled" value="true"/>-->
    11         <!--<setting name="aggressiveLazyLoading" value="false"/>-->
    12         <!--<setting name="autoMappingBehavior" value="NONE"/>-->
    13     </settings>
    14     <!--别名-->
    15     <typeAliases>
    16         <package name="cn.sohappy.bean"/>
    17     </typeAliases>
    18     <!--DB connection info,配置mybatis多套运行环境-->
    19     <environments default="development">
    20         <environment id="development">
    21             <!--采用jdbc事务管理,JDBC,MANAGED,自定义-->
    22             <transactionManager type="JDBC"/>
    23             <dataSource type="POOLED">
    24                 <property name="driver" value="${jdbc.driver}"/>
    25                 <property name="url" value="${jdbc.url}"/>
    26                 <property name="username" value="${jdbc.username}"/>
    27                 <property name="password" value="${jdbc.password}"/>
    28             </dataSource>
    29         </environment>
    30     </environments>
    31     <!--大配置关联小配置-->
    32     <mappers>
    33         <mapper resource="cn/sohappy/dao/IUserDAO.xml"/>
    34         <!--<package name="cn.happy.dao"/>-->
    35     </mappers>
    36 </configuration>

    开始一个简单的例子,感受一下mybatis的便捷。

    接口:

    1 package cn.sohappy.dao;
    2 
    3 import cn.sohappy.bean.Smbms_user;
    4 
    5 public interface IUserDAO {
    6     Smbms_user isLogin(Smbms_user user);
    7 }

    XML:

    1 <?xml version="1.0" encoding="UTF-8" ?>
    2 <!DOCTYPE mapper
    3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5 <mapper namespace="cn.sohappy.dao.IUserDAO">
    6     <select id="isLogin" resultType="bean_user">
    7         select * from smbms_user where userCode=#{usercode} and userPassword=#{userpassword}
    8     </select>
    9 </mapper>

    调用:

     1 @Test
     2     public void test01(){
     3         SqlSession session = MyBatisUtil.getSession();
     4         try{
     5             cn.sohappy.dao.IUserDAO mapper = session.getMapper(IUserDAO.class);
     6             System.out.println(mapper.isLogin(new Smbms_user()));
     7         }finally {
     8             session.close();
     9         }
    10     }

    4.生命周期

    SqlSessionFactoryBuilder(构建器):用过即丢,只要创建了SqlSessionFactory,SqlSessionFactoryBuilder就失去了价值,将被回收。

    SqlSessionFactory:创建SqlSession,所以该对象存在于Mybatis整个生命周期中。每次创建SqlSessionFactory都会打开数据库连接资源(Connection),为了避免数据库连接资源消耗殆尽,SqlSessionFactory是单例的。

    SqlSession:SqlSession是一个线程不安全的对象。其生命周期存在于请求数据库处理事物的过程中,随着session.close()而结束。每个SqlSession都会占用数据库连接池的活动资源,所以事物处理完毕后应该即使关闭session。

    Mapper:Mapper是一个接口,没有实现类。只能调用接口的方法,作用是发送SQL并返回结果或者更新数据库数据。存在于某个sqlSession事物方法之内,是方法级别的。  

  • 相关阅读:
    升级安装 Ubuntu 后该做的20项优化工作
    Delphi中点击DBGrid某一行获得其详细数据方法
    android eclipse xml不自动代码提示
    区别不同浏览器,CSS hack写法
    自我介绍
    秋季学期学习总结
    人生路上影响最大的三位老师
    SQL优化34条
    Visual Studio 2010将支持多种架构设计图
    Visual Studio 2010的SharePoint工作流功能
  • 原文地址:https://www.cnblogs.com/tomasman/p/7664609.html
Copyright © 2020-2023  润新知