spring整合mybatis(原始dao和mapper代理两种方式)
来源:互联网 发布:开淘宝店会亏本吗 编辑:程序博客网 时间:2024/06/05 09:48
一.原始Dao方式
1.引入jar包(maven文件和下面的Mapper代理方式一样)
2.applicationContext.xml
<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.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.2.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.2.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.2.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <!-- 加载配置文件 --><context:property-placeholder location="config/jdbc.properties"/> <!-- 数据库连接池 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="${driver}"/><property name="url" value="${jdbcUrl}"/><property name="username" value="${user}"/><property name="password" value="${password}"/><property name="maxActive" value="10"/><property name="maxIdle" value="5"/></bean> <!-- mapper配置 --><!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 数据库连接池 --><property name="dataSource"ref="dataSource" /> <!-- 加载mybatis的全局配置文件 --><property name="configLocation" value="config/mybatis/sqlSessionConfig.xml" /></bean> <!-- 配置dao --><bean id="userDao" class="gwd.ssm.dao.UserDaoImp"><property name="sqlSessionFactory" ref="sqlSessionFactory"/></bean></beans>
3.sqlSessionConfig.xml:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><mappers><mapper resource="gwd/ssm/po/user.xml"/></mappers></configuration>
4.User.xml(和User.java放一起)
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="test"><select id="findUserById" parameterType="int" resultType="gwd.ssm.po.User">select * from users where id=#{value}</select></mapper>
5.UserDao.java:
package gwd.ssm.dao;import gwd.ssm.po.User;public interface UserDao {public User findUserById(int id);}
UserDaoImp.java:
package gwd.ssm.dao;import gwd.ssm.po.User;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.support.SqlSessionDaoSupport; public class UserDaoImp extends SqlSessionDaoSupport implements UserDao { public User findUserById(int id) {// TODO Auto-generated method stubSqlSession sqlSession=this.getSqlSession();//sqlSessionFactory方法中有set方法User user=sqlSession.selectOne("test.findUserById",id);return user;}}
6.Test
public class UserMapperTest {
private ApplicationContext applicationContext;
@Before
public void setUp(){
applicationContext=new FileSystemXmlApplicationContext("config/spring/applicationContext.xml");
}
@Test
public void testFindUserById() {
UserMapper userMapper=(UserMapper)applicationContext.getBean("userMapper");//userMapper和UserMapper对应
User user=userMapper.findUserById(2);
System.out.println(user);
}
}
二:Mapper代理方式
1.pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>PetTest</groupId> <artifactId>pet-commonTest</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>pet-commonTest Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>4.2.0.RELEASE</spring.version> <jackson-core.version>2.6.1</jackson-core.version> <!-- log4j日志文件管理包版本 --><slf4j.version>1.7.7</slf4j.version><log4j.version>1.2.17</log4j.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.36</version> </dependency> <!-- JSTL标签类 --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- 日志文件管理包 --><!-- log start --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><!-- 格式化对象,方便输出日志 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version></dependency> </dependencies> <build> <finalName>pethome</finalName> <resources> <!-- maven项目中src源代码下的xml等资源文件编译进classes文件夹, 注意:如果没有这个,它会自动搜索resources下是否有mapper.xml文件, 如果没有就会报org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.pet.mapper.PetMapper.selectByPrimaryKey--> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <!--将resources目录下的配置文件编译进classes文件 --> <resource><directory>src/main/resources</directory> </resource> </resources> </build> </project>
2.引入配置文件
(1)PetMapper.java
package com.pet.mapper;import java.util.List;import com.pet.bean.Pet;public interface PetMapper { public Pet selectByPrimaryKey(Integer id); public List<Pet> getAll();}
(2)PetMapper.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="com.pet.mapper.PetMapper" > <resultMap id="BaseResultMap" type="com.pet.bean.Pet" > <id column="ID" property="id" jdbcType="INTEGER" /> <result column="PETNAME" property="petname" jdbcType="VARCHAR" /> <result column="AGE" property="age" jdbcType="INTEGER" /> <result column="STATUS" property="status" jdbcType="VARCHAR" /> <result column="MED_HISTORY" property="medHistory" jdbcType="VARCHAR" /> <result column="FEATHERS" property="feathers" jdbcType="VARCHAR" /> <result column="VACCINATION" property="vaccination" jdbcType="VARCHAR" /> </resultMap> <sql id="Base_Column_List" > ID, PETNAME, AGE, STATUS, MED_HISTORY, FEATHERS, VACCINATION </sql> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" > select <include refid="Base_Column_List" /> from pet where ID = #{id,jdbcType=INTEGER} </select> <select id="getAll" resultMap="BaseResultMap"> select * from Pet </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" > delete from pet where ID = #{id,jdbcType=INTEGER} </delete> <insert id="insert" parameterType="com.pet.bean.Pet" > insert into pet (ID, PETNAME, AGE, STATUS, MED_HISTORY, FEATHERS, VACCINATION) values (#{id,jdbcType=INTEGER}, #{petname,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, #{status,jdbcType=VARCHAR}, #{medHistory,jdbcType=VARCHAR}, #{feathers,jdbcType=VARCHAR}, #{VACCINATION,jdbcType=VARCHAR}) </insert> <insert id="insertSelective" parameterType="com.pet.bean.Pet" > insert into pet <trim prefix="(" suffix=")" suffixOverrides="," > <if test="id != null" > ID, </if> <if test="petname != null" > PETNAME, </if> <if test="age != null" > AGE, </if> <if test="status != null" > STATUS, </if> <if test="medHistory != null" > MED_HISTORY, </if> <if test="feathers != null" > FEATHERS, </if> <if test="vaccination != null" > VACCINATION, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides="," > <if test="id != null" > #{id,jdbcType=INTEGER}, </if> <if test="petname != null" > #{petname,jdbcType=VARCHAR}, </if> <if test="age != null" > #{age,jdbcType=INTEGER}, </if> <if test="status != null" > #{status,jdbcType=VARCHAR}, </if> <if test="medHistory != null" > #{medHistory,jdbcType=VARCHAR}, </if> <if test="feathers != null" > #{feathers,jdbcType=VARCHAR}, </if> <if test="vaccination != null" > #{vaccination,jdbcType=VARCHAR}, </if> </trim> </insert> <update id="updateByPrimaryKeySelective" parameterType="com.pet.bean.Pet" > update pet <set > <if test="petname != null" > PETNAME = #{petname,jdbcType=VARCHAR}, </if> <if test="age != null" > AGE = #{age,jdbcType=INTEGER}, </if> <if test="status != null" > STATUS = #{status,jdbcType=VARCHAR}, </if> <if test="medHistory != null" > MED_HISTORY = #{medHistory,jdbcType=VARCHAR}, </if> <if test="feathers != null" > FEATHERS = #{feathers,jdbcType=VARCHAR}, </if> <if test="vaccination != null" > VACCINATION = #{vaccination,jdbcType=VARCHAR}, </if> </set> where ID = #{id,jdbcType=INTEGER} </update> <update id="updateByPrimaryKey" parameterType="com.pet.bean.Pet" > update pet set PETNAME = #{petname,jdbcType=VARCHAR}, AGE = #{age,jdbcType=INTEGER}, STATUS = #{status,jdbcType=VARCHAR}, MED_HISTORY = #{medHistory,jdbcType=VARCHAR}, FEATHERS = #{feathers,jdbcType=VARCHAR}, vaccination = #{vaccination,jdbcType=VARCHAR} where ID = #{id,jdbcType=INTEGER} </update></mapper>
(3)spring-mybatis.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 自动扫描 --> <context:component-scan base-package="com.pet"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${db.driverClassName}" /> <property name="url" value="${db.url}" /> <property name="username" value="${db.username}" /> <property name="password" value="${db.password}" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath*:com/pet/mapper/*.xml"></property><--如果PetMapper.java文件和PetMapper.xml文件在同一目录就用上面的自动扫描即可,不需要下面的这个configLocation来配置目录。 如果不在同一目录,则上面的mapperlocation不要,使用下面的configlocation配置相应目录 --> <property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean> <!-- Mapper扫描包--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.pet.mapper" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 通知 --> </beans>(4)mybatis-config.xml(根据此项更改spring-mybatis.xml)
注意:当*Mapper.xml和对应的*Mapper.java接口在同一个目录下面的时候,此时这个配置文件可以省略
如果不在同一目录,这里需要在mapper里面配上其目录
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <mappers> <mapper resource="*Mapper.xml的目录"/> </mappers></configuration>
(5)junit测试
@Test public void findUserByIdTest2(){ ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-mybatis.xml"); PetMapper petMapper = (PetMapper) ctx.getBean("petMapper");//petMapper和PetMapper对应 List<Pet> pet = petMapper.getAll(); System.out.println(pet); }
0 0
- spring整合mybatis(原始dao和mapper代理两种方式)
- Mybatis和Spring整合(原始Dao)非mapper代理
- mybatis整合spring(mapper+原始dao)
- Spring + Mybatis - 原始dao开发整合 与 Mapper代理整合
- mybatis--开发Dao--原始dao方式和Mapper代理方式
- MyBatis之整合Spring(Dao和Mapper两种方式)
- MyBatis之整合Spring(Dao和Mapper两种方式)
- mybatis--原始dao和代理Mapper
- 【MyBatis框架点滴】——MyBatis开发DAO的两种方法:原始DAO开发方法和Mapper代理方法
- spring和mybatis整合的dao两种开放方式
- 【Spring+SpringMVC+MyBatis深入学习及搭建】02.MyBatis原始Dao开发和mapper代理开发
- 原始dao和Mapper动态代理的开放方式---Mybatis学习笔记(六)
- 原始dao和Mapper动态代理的开放方式---Mybatis学习笔记(六)
- Spring和Mybatis整合(原始dao)
- mybatis 原始dao开发和mapper代理开发的比较
- mybatis教程--原始方式和mapper方式开发dao详解
- spring+springmvc+mybatis(1)--整合和原始dao开发
- MyBatis 原始dao与mapper代理
- 第一篇哦~~知乎问题答案分析
- 安卓里面的活动的加载模式
- 7. Reverse Integer (java)
- 1875: 蛤玮的财宝-(双线DP)
- 使用git将代码上传到geihub
- spring整合mybatis(原始dao和mapper代理两种方式)
- 数学测试test20170304
- c++知识点整理(上)
- 分析Linux内核创建一个新进程的过程
- 算法训练 数的统计
- 计算机组成原理之MIPS汇编:冒泡排序
- 二叉查找树
- Java容器类类库概述
- 一 javase学习记录08