Spring整合Mybatis具体代码实现流程_第1页
Spring整合Mybatis具体代码实现流程_第2页
Spring整合Mybatis具体代码实现流程_第3页
Spring整合Mybatis具体代码实现流程_第4页
Spring整合Mybatis具体代码实现流程_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第Spring整合Mybatis具体代码实现流程目录原始方式读取mybatis配置文件,获取SqlSessionSqlSessionFactory等

packagecom.atguigu.rj1192.zyk;

importorg.apache.ibatis.io.Resources;

importorg.apache.ibatis.session.SqlSession;

importorg.apache.ibatis.session.SqlSessionFactory;

importorg.apache.ibatis.session.SqlSessionFactoryBuilder;

importjava.io.IOException;

importjava.io.InputStream;

importjava.util.List;

publicclassTestMybatis{

publicstaticvoidmain(String[]args)throwsIOException{

//从配置文件中构建SqlSessionFactory

Stringresource="mybatis-config.xml";

InputStreaminputStream=Resources.getResourceAsStream(resource);

SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream);

//创建一个SqlSession对象(获取自动事务管理的session)

SqlSessionsession=sqlSessionFactory.openSession(true);

//获取Mapper对象(反射,设计模式之代理模式)

UserMappermapper=session.getMapper(UserMapper.class);

Useruser=newUser();

user.setUsername("sdfs");

user.setPassword("123456");

user.setPhone("123456578909");

user.setStatus(1);

mapper.insert(user);

System.out.println(mapper.selectById(3));

}

这种方式就是将SqlSessionSqlSessionFactory等类,全部用bean标签放到ioc容器中,

如果这样的话,我只能从ioc中获得到sqlsession,要使用接口的方法,还需要getbean(),不方便,可以再加一个类,它去getbean(),并把这个类放进ioc容器中,使用方法的时候直接从ioc中拿这个类,再.方法名就行了

这个新的类,有mapper生成的sqlsession,sqlsession中有mapper的所有的方法,所以这个类中要有sqlsession的所有方法,即实现接口(有点绕,就是为了调用这个类的时候,mapper中的所有方法都可以调用)

xmlversion="1.0"encoding="UTF-8"

beansxmlns="/schema/beans"

xmlns:xsi="/2001/XMLSchema-instance"

xsi:schemaLocation="/schema/beans

/schema/beans/spring-beans.xsd"

!--dataSource使用spring的数据源替换mybatis的连接池还可以用c3p0dbcp--

beanid="dataSource"

propertyname="driverClassName"value="com.mysql.jdbc.Driver"/property

propertyname="url"value="jdbc:mysql://:3306/accountserverTimezone=UTC"/property

propertyname="username"value="root"/property

propertyname="password"value="mysql"/property

/bean

!--sqlsessionFactory--

beanid="sqlSessionFactory"

propertyname="dataSource"ref="dataSource"/

!--绑定mybatis的配置文件--

!--这个文件可以写别名,和绑定的mapper

但是为了方便管理,这两项单独写个mybatis-config.xml再导入该文件即可--

propertyname="configLocation"value="classpath:mybatis-config.xml"/property

/bean

!--sqlsessionTemplate就是我们用的sqlsession--

beanid="sqlsession"

!--因为没有set方法,只能使用构造器注入--

constructor-argindex="0"ref="sqlSessionFactory"/constructor-arg

/bean

beanid="accountdaoimpl"

propertyname="sqlSession"ref="sqlsession"/property

/bean

/beans

新加的类

packagecom.atguigu.rj1192.zyk.dao;

importcom.atguigu.rj1192.zyk.pojo.Account;

importorg.apache.ibatis.session.SqlSession;

importorg.mybatis.spring.SqlSessionTemplate;

importjava.util.List;

publicclassAccoountDaoImplimplementsAccountDao{

publicSqlSessionTemplatesqlSession;

publicvoidsetSqlSession(SqlSessionTemplatesqlSession){

this.sqlSession=sqlSession;

@Override

publicListAccountselectall(){

AccountDaoaccountDao=sqlSession.getMapper(AccountDao.class);

returnaccountDao.selectall();

}

importcom.atguigu.rj1192.zyk.dao.AccountDao;

importcom.atguigu.rj1192.zyk.pojo.Account;

importorg.apache.ibatis.io.Resources;

importorg.apache.ibatis.session.SqlSession;

importorg.apache.ibatis.session.SqlSessionFactory;

importorg.apache.ibatis.session.SqlSessionFactoryBuilder;

importorg.junit.Test;

importorg.springframework.context.ApplicationContext;

importorg.springframework.context.annotation.AnnotationConfigApplicationContext;

importorg.springframework.context.support.ClassPathXmlApplicationContext;

importjava.io.IOException;

importjava.io.InputStream;

importjava.util.List;

publicclasstest{

@Test

publicvoidquery()throwsIOException{

ApplicationContextapplicationContext=newClassPathXmlApplicationContext("Spring-dao.xml");

AccountDaoaccountadoimpl=(AccountDao)applicationContext.getBean("accountdaoimpl");

System.out.println(accountadoimpl.selectall());

}

第二种方法那个新的类继承SqlSessionDaoSupport,配置文件就可以只配置sqlSessionFactory和datasource,

xmlversion="1.0"encoding="UTF-8"

beansxmlns="/schema/beans"

xmlns:xsi="/2001/XMLSchema-instance"

xsi:schemaLocation="/schema/beans

/schema/beans/spring-beans.xsd"

!--dataSource使用spring的数据源替换mybatis的连接池还可以用c3p0dbcp--

beanid="dataSource"

propertyname="driverClassName"value="com.mysql.jdbc.Driver"/property

propertyname="url"value="jdbc:mysql://:3306/accountserverTimezone=UTC"/property

propertyname="username"value="root"/property

propertyname="password"value="mysql"/property

/bean

!--sqlsessionFactory--

beanid="sqlSessionFactory"

propertyname="dataSource"ref="dataSource"/

!--绑定mybatis的配置文件--

!--这个文件可以写别名,和绑定的mapper

但是为了方便管理,这两项单独写个mybatis-config.xml再导入该文件即可--

propertyname="configLocation"value="classpath:mybatis-config.xml"/property

/bean

将新的类放进ioc容器中

beanid="AccoountDaoImpl2"

propertyname="sqlSessionFactory"ref="sqlSessionFactory"/property

/bean

/beans

packagecom.atguigu.rj1192.zyk.dao;

importcom.atguigu.rj1192.zyk.pojo.Account;

importorg.apache.ibatis.session.SqlSession;

importorg.mybatis.spring.support.SqlSessionDaoSupport;

importjava.util.List;

publicclassAccoountDaoImpl2extendsSqlSessionDaoSupportimplementsAccountDao{

@Override

publicListAccountselectall(){

//和第一种是一样的,只是将赋值写在了SqlSessionDaoSupport类中,不用自己在xml中赋值了

//getSqlSession();父类中的方法

SqlSessionsqlSession=getSqlSe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论