您的位置:首页 > 编程语言 > Java开发

Mybatis与Spring的原生Dao整合

2015-11-02 18:41 483 查看
1、环境配置



2、mybatis的配置文件SqlMapConfig.xml文件

创建sourcefolder mybatis 创建配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

<!-- 别名定义 -->
<typeAliases>

<!-- 批量别名定义 指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以) -->
<package name="cn.itcast.ssm.po" />

</typeAliases>

<!-- 加载 映射文件 -->
<mappers>
<mapper resource="sqlmap/User.xml" />

<!-- 批量加载mapper 指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录
中 上边规范的前提是:使用的是mapper代理方法 和spring整合后,使用mapper扫描器,这里不需要配置了 -->
<!-- <package name="cn.itcast.ssm.mapper"/> -->

</mappers>

</configuration>


2、spring的配置文件

在classpath下创建applicationContext.xml,定义数据库链接池、SqlSessionFactory

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">

<!-- 加载配置文件 -->
<context:property-placeholder location="classpath:db.properties" />
<!-- 数据源使用dbcp -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxActive" value="10" />
<property name="maxIdle" value="5" />
</bean>
<!-- sqlSesionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 加载mybatis配置文件 在classpath下的mybatis下的SqlMapConfig.xml -->
<property name="configLocation" value="mybatis/SqlMapConfig.xml"></property>
<!-- 数据源 -->
<property name="dataSource" ref="dataSource"></property>
</bean>

<!-- 原始dao接口的sqlSessionFactoty采用spring注入方式 -->
<bean id="userDao" class="cn.byr.ssm.dao.UserDaoImpl">
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>

</beans>


3、原生Dao开发方式

1、    在sqlMapConfig.xml中配置映射文件的位置
<mappers>
<mapper resource="mapper.xml文件的地址" />
<mapper resource="mapper.xml文件的地址" />
</mappers>

2、    定义dao接口
3、    dao接口实现类集成SqlSessionDaoSupport

dao接口实现类方法中可以this.getSqlSession()进行数据增删改查。

4、    spring 配置
<bean id=" "class="mapper接口的实现">


4、User.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">

<!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用
-->
<mapper namespace="user">

<!-- 在 映射文件中配置很多sql语句 -->
<!-- 需求:通过id查询用户表的记录 -->
<!-- 通过 select执行数据库查询
id:标识 映射文件中的 sql
将sql语句封装到mappedStatement对象中,所以将id称为statement的id
parameterType:指定输入 参数的类型,这里指定int型
#{}表示一个占位符号
#{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称

resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。
-->
<select id="findUserByLoginname" parameterType="String" resultType="cn.byr.ssm.po.User">
SELECT * FROM t_user WHERE loginname=#{value}
</select>

</mapper>


5、UserDaoImpl文件

package cn.byr.ssm.dao;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import cn.byr.ssm.po.User;

public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao   {
@Override
public User findUserByLoginname(String loginname) throws Exception {
//这里通过继承sqlSessionDaoSupport来得到sqlSession
SqlSession sqlSession=this.getSqlSession();
User user=sqlSession.selectOne("user.findUserByLoginname",loginname);
//        //释放资源
//        sqlSession.close();
return user;

}

}


6测试

package cn.byr.ssm.dao;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.byr.ssm.po.User;

public class UserDaoImplTest {

private ApplicationContext applicationContext;
//在setup这个方法得到spring的容器
@Before
public void setUp() throws Exception {
applicationContext=new
ClassPathXmlApplicationContext("cl" +
"asspath:spring/applicationContext.xml");
}

@Test
public void testFindUserByLoginname() throws Exception {
UserDao userDao=(UserDao) applicationContext.getBean
("userDao");

User user=userDao.findUserByLoginname("zhangSan");
System.out.println(user.getUid()+":"+user.getLoginname()+":"+user.getEmail());
}

}


7、运行结果



1、 在sqlMapConfig.xml中配置映射文件的位置

<mappers>

<mapper resource="mapper.xml文件的地址" />

<mapper resource="mapper.xml文件的地址" />

</mappers>

2、 定义dao接口

3、
dao接口实现类集成SqlSessionDaoSupport

dao接口实现类方法中可以this.getSqlSession()进行数据增删改查。

4、 spring 配置

<beanid=" "class="mapper接口的实现">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: