ssm——spring整合mybatis

一、导包

<properties>
  	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  		<junit.version>4.12</junit.version>
  		<slf4j.version>1.7.25</slf4j.version>
  		<javax.servlet.jsp-api.version>2.3.1</javax.servlet.jsp-api.version>
		<javax.servlet-api.version>3.1.0</javax.servlet-api.version>
  		<mysql.version>5.1.38</mysql.version>
  		<mybatis.version>3.4.6</mybatis.version>
  		<spring.version>5.0.8.RELEASE</spring.version>
  		<aspect.version>1.8.10</aspect.version>
  		<c3p0.version>0.9.5.2</c3p0.version>
  		<mybatis-spring.version>1.3.2</mybatis-spring.version>
  </properties>
  <dependencies>
  <!-- mybatis整合spring支持 -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis-spring</artifactId>
		    <version>${mybatis-spring.version}</version>
		</dependency>
  <!-- c3p0支持 -->
		<dependency>
			<groupId>com.mchange</groupId>
			<artifactId>c3p0</artifactId>
			<version>${c3p0.version}</version>
		</dependency>
  <!-- spring的aop支持 -->
  <dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>${aspect.version}</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${aspect.version}</version>
		</dependency>
  <!-- spring框架支持 -->
  <!-- spring上下文支持 -->
  <dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
<!-- spring-jdbc支持 -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-jdbc</artifactId>
	    <version>${spring.version}</version>
	</dependency>
	<!-- spring-web支持,通过WebApplicationContext获取ioc容器 -->
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-web</artifactId>
		    <version>${spring.version}</version>
		</dependency>
	<!-- spring整合junit测试 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
			<scope>test</scope>
		</dependency>
  <!-- mybatis框架 -->
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>${mybatis.version}</version>
</dependency>
    	<!-- mysql connector-->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>${mysql.version}</version>
	</dependency>
	<!--jsp、servlet支持, provide属性表示只参与测试,不加载导war包中 -->
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>javax.servlet.jsp-api</artifactId>
			<version>${javax.servlet.jsp-api.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>${javax.servlet-api.version}</version>
			<scope>provided</scope>
		</dependency>
		<!-- log4j -->
	<dependency>
	    <groupId>org.slf4j</groupId>
	    <artifactId>slf4j-log4j12</artifactId>
	    <version>${slf4j.version}</version>
	    <scope>test</scope>
	</dependency>
  <!-- junit测试支持 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

二、mapper接口和mapper.xml映射文件以及mybatis配置文件

1.mapper接口

public interface UserMapper {
	//mybatis使用mapper动态代理
	
		//4大原则,一个注意
		//1.接口中的方法名需要与对应mapper.xml的id一致
		//2.接口中的返回值需要与对应mapper.xml的返回值类型保持一致
		//3.接口中的参数需要与对应mapper.xml的参数类型、个数、参数名保持一致
		//4.对应mapper.xml的名字空间需要修改成对应接口的全包名
		//注意:mapper动态代理根据返回值类型,mybatis会自动选择调用selectone还是selectlist....
		
		//根据用户id获取用户信息
		public User selectUserById(Integer uid);
		//根据用户名模糊查询用户信息
		public List<User> selectUserByName(String uname);
		//插入用户
		public void insertUser(User user);
		//根据用户id删除用户
		public void deleteUserById(Integer uid);
		//更新用户信息
		public void updateUser(User user);
		//多参数查询
		//用map封装条件
		public List<User> selectByMap(Map<String,Object> map);
		//用list封装条件
		public List<User> selectByList(List<Integer> testlist);
		//用数组封装条件
		public List<User> selectByArray(Integer[] ids);
		//直接传多个参数
		public User selectByMoreParamter(String uname,Integer age,String address);
}

2.mapper映射文件

<?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.spring_mybatis_demo.mapper.UserMapper">
<!-- #{}占位符 -->
<select id="selectUserById" parameterType="Integer" resultType="User">
	select * from t_user where uid = #{uid}
</select>
<!-- ${value}字符串拼接 容易发生sql注入,建议使用占位符#{}-->
<select id="selectUserByName" parameterType="String" resultType="User">
	<!-- select * from t_user where uname like '%${value}%' -->
	select * from t_user where uname like concat('%',#{uname},'%')
</select>
<insert id="insertUser" parameterType="User">
	insert into t_user values(null,#{uname},#{age},#{address})
</insert>
<delete id="deleteUserById" parameterType="Integer">
	delete from t_user where uid=#{uid}
</delete>
<update id="updateUser" parameterType="User">
	<!-- update t_user set uname=#{uname},age=#{age},address=#{address} where uid=#{uid} -->
	update t_user
	<!-- set标签可以拼接update条件,同时能够删除多余的符号,平时拼接字符串总是需要手动去除多余的逗号什么的分隔符 -->
	<!-- <set>
		<if test="uname!=null and address!=''">uname=#{uname},</if>
		<if test="age!=null">age=#{age},</if>
		<if test="address!=null and address!=''">address=#{address}</if>
	</set> -->
	<trim prefix="set" suffixOverrides=",">
		<if test="uname!=null and address!=''">uname=#{uname},</if>
		<if test="age!=null">age=#{age},</if>
		<if test="address!=null and address!=''">address=#{address}</if>
	</trim>
	where uid=#{uid}
</update>
<select id="selectByMap" parameterType="hashmap" resultType="User">
	select * from t_user where uname like concat('%',#{uname},'%') and uid&lt;#{uid}
</select>
<select id="selectByList" resultType="User">
	select * from t_user where uid in
	<foreach collection="list" item="item" open="(" separator="," close=")">
		#{item}
	</foreach>
</select>
<select id="selectByArray" resultType="User">
	select * from t_user where uid in
	<foreach collection="array" item="item" open="(" separator="," close=")">
		#{item}
	</foreach>
</select>
<select id="selectByMoreParamter" resultType="User">
	<!-- select * from t_user where uname like concat('%',#{param1},'%') and age = #{param2} and address = #{param3} -->
	select * from t_user where uname like concat('%',#{arg0},'%') and age = #{arg1} and address = #{arg2}
</select>
</mapper>

3.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>
		<!-- 别名设置有两种,一种是一个一个设置,另外一种是设置某个包,默认别名为类名(大小写都可以,建议小写) -->
		<!-- 第一种设置 
	 	<typeAlias type="com.mybatis_demo.domain.User" alias="user"/>-->
	 	<!-- 第二种设置,整个包下面的类都进行别名设置,推荐第二种 -->
	 	<package name="com.spring_mybatis_demo.domain"/>
	 </typeAliases>
	 <!-- 引入映射文件 -->
  	<mappers>
  		<!-- <mapper resource="mapper/UserMapper.xml"/> -->
  		<package name="com.spring_mybatis_demo.mapper"/>
  	</mappers>
</configuration>

三、spring整合mybatis

1.db.properties

dataSource.driverClass=com.mysql.jdbc.Driver
dataSource.jdbcUrl=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
dataSource.user=blog
dataSource.password=blog

2.spring配置文件

<?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:context="http://www.springframework.org/schema/context"
	
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context.xsd">
	
	<!-- 读取配置文件 -->
	<context:property-placeholder location="classpath:db.properties"/>
	<!-- dataSource -->
	<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${dataSource.driverClass}"/>
		<property name="jdbcUrl" 	 value="${dataSource.jdbcUrl}"/>
		<property name="user" 		 value="${dataSource.user}"/>
		<property name="password" 	 value="${dataSource.password}"/>
	</bean>
	<!-- spring整合mybatis -->
	<!-- 1.配置SqlSessionFactoryBean -->
	<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 注入数据源 -->
		<property name="dataSource" ref="dataSource"/>
		<!-- 告诉spring去哪里加载mybatis配置文件 -->
		<property name="configLocation"  value="classpath:mybatisConfig.xml"/>
	</bean>
	<!-- UserDao -->
	<bean name="userDao" class="com.spring_mybatis_demo.dao.UserDaoImpl">
		<property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
	</bean>
	<!-- mapper动态代理开发
	<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
		注入SqlSessionFactory
		<property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
		配置接口
		<property name="mapperInterface" value="com.spring_mybatis_demo.mapper.UserMapper"/>
	</bean> -->
	<!-- mapper扫描开发 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.spring_mybatis_demo.mapper"/>
	</bean>
	<!-- 开启组件扫描,默认开启注解 -->
	<context:component-scan base-package="com.spring_mybatis_demo"/>
</beans>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值