zoukankan      html  css  js  c++  java
  • Mybatis基础知识

      1.1 该项目使用oracle数据库,设置minpoolsize = 50,maxpoolsize = 500;

      其中minpoolsize和maxpoolsize的作用:如果一个用户对数据库频繁的建立连接、关闭连接很浪费资源,所以我们可以设置一个连接缓存池,当需要建立连接时,从缓存池中获取,比如minpoolsize=50,是初始化的时候jdbc驱动一次性建立50个连接放入缓冲池中,不需要连接时将连接释放到缓冲池。

      1.2 数据持久化

      对于企业级应用程序来说就是将数据从内存保存到磁盘空间上;所谓持久层就是从逻辑层面上讲,专注于数据持久化的过程;

      1.3 阻抗不匹配

      为何需要Hibernate和Mybatis这种持久层框架,原因在于java对象模型和数据库关系模型不匹配,没办法直接将对象的值存储到关系型数据库里面,

      解决方案有:

       1.需要使用jdbc手动写代码

       2.使用持久层框架将对象模型和关系模型映射起来

    2.Mybatis基本知识

      首先需要一个SessionFactory,之后用它来生成Session(类似于jdbc里面的建立连接),SessionFactory需要参数DataSource(数据源,连接数据库使用),还有mybais的配置文件,里面是mybatis的重要配置信息;

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="configLocation" value="classpath:mybatis-conf.xml"/>
        </bean>

      除了SessionFactory之外还需要事务处理引擎,一般数据库都会需要事务管理,在进行持久化操作之前开启事物,操作完成之后关闭事务;

    <bean name="transactionManager"
              class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"></property>
        </bean>

      创建实体类,比如创建TeacherEntity

    public class TeacherEntity {
        private String  id;        //id
        private String name;        //名字
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
       public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }

      创建对象对应的xml文件

    <?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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
    例如namespace="me.gacl.mapping.teacherMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
     -->
    <mapper namespace="com.teacherMapper">
        <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getById,id属性值必须是唯一的,不能够重复
        使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
        resultType="com.User"就表示将查询结果封装成一个User类的对象返回
        User类就是users表所对应的实体类
        -->
        <!-- 
            根据id查询得到一个teacher对象
         -->
        <select id="getUser" parameterType="int" 
            resultType="com.TeacherEntity">
            select * from teachers where id=#{id}
        </select>
    </mapper>

       接着需要找到Teacher.xml在哪,也需要配置;

     <mappers>
            <!-- 注册teacherMapper.xml文件, 
            teacherMapper.xml位于com这个包下,所以resource写成com/teacherMapper.xml-->
            <mapper resource="com/teacherMapper.xml"/>
     </mappers>
  • 相关阅读:
    225. Implement Stack using Queues
    150. Evaluate Reverse Polish Notation
    159 Longest Substring with At Most Two Distinct Characters
    142. Linked List Cycle II
    打印沙漏 (20 分)
    人见人爱A-B
    人见人爱A+B
    杨辉三角
    进制转换
    汉字统计
  • 原文地址:https://www.cnblogs.com/zhihuayun/p/7234984.html
Copyright © 2011-2022 走看看