发表于: 2017-12-25 17:28:27
2 746
昨天完成spring + hibernate (c3p0)的数据库连接池的连接------>感觉那个封装了很多,好多都是通过注解的方式------>简化很多(大多都在XML里面配置)
在师兄的建议下我今天准备一下spring + mybatis (c3p0)的数据库连接池的连接---->我是在开始mybatis的连接数据库的基础上修改的----->感觉有连接池的配置还是多一点就是连接池的最大和最小数量的多少,还有超时的时间.
那就开始------>介绍spring + mybatis怎么.连接数据库连接池的
在开始还是要下载对应的jar包
除了关于mybatis的jar包还有最重要的 c3p0的jar包(开始我已经下载好了)
准备工作完成了------->接下来就是这么操作了
先展示项目的结构---->
先将下载的jar包放在lib下面在 build path----->添加jar包
开始准备创建实体的实体类 category类
接下来是categoryMapper ----->接口实现类
接下就是Category.xml
Category.xml需要和上一个CategoryMapper类放在同一个包下,
并且namespace必须写CategoryMapper(这个必须这个放在同一个文件夹下)
还有Category.xml----->namespace 也要是同一个文件夹下
配置具体查询的SQL的语句
接下来就是applicationContext.xml
这个原来的链接数据库的jdbc要删除------>
现在里面主要的sqlsession的配置----->还mybatis的配置
创建的几个配置
C3P0的里面的全部的配置----->(重要区别没有数据库连接池的配置)
配置了C3P0还有配置相对应的 config.properties的相关数据的配置
连接数据库的相关的数据
接下来就是怎么测试
使用Spring注解方式测试,拿到注入的CategoryMapper对象,当调用add方法的时候,会自动去找Category.xml里id="add"的sql语句。(将增删改查的全部的代码放下面)
package com.java.test;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.fuwei.mapper.CategoryMapper;
import com.fuwei.pojo.Category;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class MybatisTest {
@Autowired
private CategoryMapper categoryMapper;
@Test//插入数据
public void testAdd() {
Category category = new Category();
category.setUsername("mybatis+spring");
category.setClasses("pool");
category.setBirthday("1926-0-3");
category.setCity("北京");
category.setQq(15652584);
category.setWords("pool可以的");
category.setPhone(1955148);
categoryMapper.add(category);
}
@Test//删除信息
public void testDelete() {
Category category = new Category();
category.setSid(33);
//categoryMapper.delete(32);
}
@Test//修改信息
public void testUpdate() {
Category category = new Category();
category.setSid(28);
category.setUsername("true---西海66");
categoryMapper.update(category);
}
@Test//查询全部的信息
public void testList() {
System.out.println(categoryMapper);
List<Category> cs=categoryMapper.list();
for (Category c : cs) {
System.out.println(c.toString());
}
}
}
里面要注意的怎么注入的
增加数据(数据的插入----->)
数据的删除
数据的修改
查询全部的数据
增删改查的最终的结果
进过一天的学习------>终于弄好了spring + mybatis的C3P0 的数据库连接池的增删改查的基本操作-*----->
今天完成的事情:spring + mybatis的C3P0 的数据库连接池的增删改查的基本操作-->还是总结一下关于spring + mybatis && spring + hibernate的不同吧
1.在spring + mybatis里面的注入的不是很多,在测试的里面还有有简单的数据的类还有接口的调用,类的实例化等等的操作----->但是在增删改查的语句的里面有一些差别
spring + hibernate 的信息是将字段[配置在XML里面
spring + mybatis 知识将查询的SQL语句的配置在XML里面
还有连接池的配置spring + hibernate是将信息和连接的名字放在一起的key ---value
spring + mybatis是分了两个文件 原始的连接----还有数据的编写
具体的信息配置
就简单的对比了一下
还有师兄问的 mybatis && hibernate的适应的范围分别是那些
hibernate:是一个标准化的ORM框架。入门的门槛较高,不需要程序写sql,语句就自动生成了。对sql进行优化、修改比较困难。
应用场景:适用于中小企业需求变化不多的项目,比如后台管理系统,erp、orm、oa。
mybatis:专注sql本身,程序员需要自己写sql语句,sql的修改与优化比较方便。它是一个不完全的ORM框架,虽然程序员自己写sql,但它自身也可以实现映射。
应用场景:适用于需求变化较多的项目,比如互联网。
[相同点:他们都是市面上流行的ORM框架。他们均是通过xml配置生成sessionFactory然后通过sessionFactory生成session执行sql和管理事务。他们都支持JDBC和事务管理。
区别主要在一下几个方面体现:
1.开发速度
MyBatis支持的学习相比Hibernate更简单,支持原生sql,学习更简单。Hibernate的学习难度更大。开发速度差距不大。MyBatis要维护dao层数据库字段和bean属性映射,Hibernate要在bean中添加字段映射。
2.运行效率
MyBatis支持原生sql自定义查询字段更加灵活,基本属于JDBC操作。hibernate是对JDBC更复杂的封装。每次查询需要完整的映射,对待复杂的查询通过HQL语句生成的sql语句效率不能保证。所以MyBatis会比Hi稍快。
3.日志管理
MyBatis需要log4j打印日志。Hibernate有自己带的日志系统,且更细致。
4.缓存机制
Hibernate具有一级缓存和二级缓存。一级缓存为session缓存,当session失效缓存也失效。二级缓存是SessionFactory级别,由于SessionFactory在系统中是单例,所以二级缓存会一直存在整个应用的生命周期中。
5.映射方式
MyBatis的对象关系映射配置灵活,Hibernate则需要配置完整的对象关系映射,对象关系维护的更好。业务表的关联太多,建议使用MyBatis。
6.sql优化性能调优
MyBatis原生sql性能优化,有时候相比Hibernate自动生成的sql好太多。
7.数据库移植方面
MyBatis的数据移植方面,没有Hibernate。Hibernate自动生成sql能适应更多的数据库,并且能反向生成表。
8.后期维护
MyBatis后期维护比Hibernate更方便]
--->怪不得没有hibernate 没有SQL语句---->这个难一些(对mybatis和hibernate有更多了解)
明天的计划:准备在面函数里面循环1000循环,不关闭连接池
今天的困难:就是在开始怎么配置C3P0的数据的那个sqlsession 还有java bean的配置还有连接池那个反映还是很有个过程---->每次跑单元测试的时候就是开始有一个类似报错的,不过一会连上了
今天的收获:完成mybatis的C3P0的数据库连接池的操作---->还有对比了hibernate的数据库连接池---->还有mybatis 和 hibernate的适应场景
加油--坚持
评论