Mybatis-Spring

Spring整合Mybatis:顺应下时代潮流,把这些市面上流行的东东都整一遍玩玩。要不然就变成“老古董”了。

第一步、需要导入spring jar包、Mybatis jar包、Mybatis-spring jar包;

第二步、在spring的配置文件applicationContext.xml中加入如下配置项,及其作用:

	<!-- 配置数据源 -->
<span style="white-space:pre">	</span><bean id="dataSource" destroy-method="close"
	  class="org.apache.tomcat.dbcp.dbcp.BasicDataSource">
	    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
	    <property name="url" value="jdbc:mysql://localhost:3306/test"/>
	    <property name="username" value="root"/>
	    <property name="password" value="123456"/>
	    <property name="initialSize" value="3"/>
	</bean>
	
<span style="white-space:pre">	</span><!-- 在spring的context中注入<span style="font-family: Arial, Helvetica, sans-serif;">SqlSessionFactory,以便在后面的sql执行模板中Injection</span><span style="font-family: Arial, Helvetica, sans-serif;"> --></span>
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource"/>
		</property>
		<property name="configLocation" value="classpath:Mybatis-Configuration.xml"></property>
	</bean>

<span style="white-space:pre">	</span><!-- 提供一个template来执行业务接口方法和配置的sql -->
	<bean id="baseMapper" class="org.mybatis.spring.mapper.MapperFactoryBean" abstract="true" lazy-init="true">
		<property name="sqlSessionFactory">
			<ref bean="sqlSessionFactory"/>
		</property>
	</bean>
	
	<bean id="userDao" parent="baseMapper">
		<property name="mapperInterface" value="com.cmpsky.mybatistest.dao.UserDao"></property>
	</bean>
	
	<bean id="bigUserDao" parent="baseMapper">
		<property name="mapperInterface" value="com.cmpsky.mybatistest.dao.BigUserDao"></property>
	</bean>

第三步、Mybatis的基本configure文件还是要的,只是不再在里面配置包括datasource在内的environment了:
<pre name="code" class="html"><?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>
  <mappers>
  	<!-- import UserMapper.xml -->
	<mapper resource="com/cmpsky/mybatistest/data/UserMapper.xml"/>
	<mapper resource="com/cmpsky/mybatistest/data/BigUserMapper.xml"/>
  </mappers>
</configuration>

 

第四步、配置具体的SQL映射文件<span style="font-family: Arial, Helvetica, sans-serif;">BigUserMapper.xml,这里是个稍微复杂点的例子</span><span style="font-family: Arial, Helvetica, sans-serif;">:</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="html"><?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.cmpsky.mybatistest.dao.BigUserDao">
	<resultMap type="com.cmpsky.mybatistest.data.GFModel" id="gfModelMapper">
		<id property="gf_name" column="gf_name"/>
		<result property="sex" column="sex"/>
		<result property="age" column="age"/>
		<result property="bf_name" column="bf_name"/>
	</resultMap>
	
	<resultMap type="com.cmpsky.mybatistest.data.FriendsModel" id="friendsModelMapper">
		<id property="f_name" column="f_name"/>
		<result property="sex" column="sex"/>
		<result property="age" column="age"/>
		<result property="fname_to" column="fname_to"/>
	</resultMap>
	
	<resultMap type="com.cmpsky.mybatistest.data.BigUserModel" id="bigUserModelMapper">
		<constructor>
			<idArg column="username" javaType="String"/>
		</constructor>
		<result column="sex" javaType="int"/>
		<result column="age" javaType="int"/>
		<association property="gf" column="gf_name" javaType="com.cmpsky.mybatistest.data.GFModel" resultMap="gfModelMapper"/>
		<collection property="friendsList" column="f_name" ofType="com.cmpsky.mybatistest.data.FriendsModel" resultMap="friendsModelMapper"></collection>
	</resultMap>
	
	<select id="getBigUser" parameterType="com.cmpsky.mybatistest.data.UserModel" resultMap="bigUserModelMapper">  
	    select tut.username,tut.sex,tut.age,
	    tgf.gf_name,tgf.sex,tgf.age,tgf.bf_name,
	    tfs.f_name,tfs.sex,tfs.age,tfs.fname_to  
	     from t_user_test tut 
	     left join t_gf tgf on tut.username = tgf.bf_name 
	     left join t_friends tfs on tut.username = tfs.fname_to 
	     where tut.username = #{username}
	</select>
</mapper>
 

第五步、定义dao接口:
<pre name="code" class="java">import com.cmpsky.mybatistest.data.BigUserModel;
import com.cmpsky.mybatistest.data.UserModel;

public interface BigUserDao 
{
	BigUserModel getBigUser(UserModel user);
}
 

第六步、可以调用测试了:

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.cmpsky.mybatistest.dao.BigUserDao;
import com.cmpsky.mybatistest.dao.UserDao;
import com.cmpsky.mybatistest.data.UserModel;
import com.cmpsky.mybatistest.util.ApplicationContextFactory;

@Controller
public class MybatisTestController 
{	
	@RequestMapping(value="b-s-test",params="complex")
	public String getBigUser(Model model)
	{
		BigUserDao dao = (BigUserDao)ApplicationContextFactory.getApplicationContext().getBean("bigUserDao");
		
		System.out.println(dao.getBigUser(new UserModel("lida1",1, 24)));
		
		model.addAttribute("message", "success");
		
		return "hello";
	}
}


当然,这里面牵扯到的spring-mvc知识,得是要知道的。我就不加了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值