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>