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>

posted on 2017-07-25 16:42  heartzhizi  阅读(201)  评论(0编辑  收藏  举报

导航