Mybatis与spring的简单整合

1,昨天写了篇mybatis框架简单操作数据库,今天写着这篇博客与上篇的博客很相似,但是却是与spring容器的简单整合,

首先看一下整体的目录结构:

    (1)导包:需要把spring框架的4+2核心包,和昨天的Mybatis包,以及两者整合的包(这儿就不详细的介绍了)

    (2)还是昨天的java bean类和mapper配置文件。

package cn.zhong.mybatis.user;

public class User {
	private int  id;
	private String loginName;
	private String loginPwd;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getLoginName() {
		return loginName;
	}
	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}
	public String getLoginPwd() {
		return loginPwd;
	}
	public void setLoginPwd(String loginPwd) {
		this.loginPwd = loginPwd;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", loginName=" + loginName + ", loginPwd=" + loginPwd + "]";
	}
}

Mybatis.xml (注意,namespace的值不是随便取的,是映射接口的路径,这个错误我找了好长时间)

<?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的值后面DAO层操作会用到,id的值是要查询的方法 
    #{} 这个相当于hibernate的?,是占位符,#{loginName}表示读入loginName的值放入。
-->
<mapper namespace="cn.zhong.mybatis.Dao.UserDao">
    <select id="selectUserById" parameterType="Integer" resultType="cn.zhong.mybatis.user.User">
        select * from User where id = #{id}
    </select>
    <select id="selectAllUser" resultType="cn.zhong.mybatis.user.User">
        select * from User
    </select>
    <insert id="adduser" parameterType="cn.zhong.mybatis.user.User" >
        insert into User(loginName,loginPwd) values(#{loginName},#{loginPwd})
    </insert>
    <update id="updateId" parameterType="cn.zhong.mybatis.user.User">
        update User set loginName = #{loginName},loginPwd=#{loginPwd} where id = #{id}
    </update>
    <delete id="deleteUser" parameterType="cn.zhong.mybatis.user.User">
        delete from User where id = #{id}
    </delete>
</mapper>

映射接口:里面的方法参数与Mybatis相对应。上面还有一个知识点没弄明白(我一直以为是那个错误,结果不是,改了好长时间)

package cn.zhong.mybatis.Dao;

import java.util.List;
import org.springframework.stereotype.Repository;
import cn.zhong.mybatis.user.User;
import org.apache.*;
import org.mybatis.spring.annotation.MapperScan;
//这个的作用,暂时没测试出来
//@MapperScan("cn/zhong/mybatis/user/Mybatis.xml")
@Repository("userDao")
public interface UserDao {
    /*
     * 接口方法对应的SQL映射文件,Mybatis.xml,方法名称与映射文件中的id的值一样
     * 各个类型参数都要一致
     * 返回值要一样,
     * UserDao所在的路径和Mybatis.xml文件中 namespace的值一样
     */
	public User selectUserById(Integer id);
	public List<User> selectAllUser();
	public int adduser(User user);
	public int updateId(User user);
	public int deleteUser(User user);
}

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>
<!--     <environments default="development">
         <environment id="development">
             <transactionManager type="JDBC"></transactionManager>
             <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="AYZXX"/>
             </dataSource>
         </environment>
    </environments> -->
    <!-- 告诉mybatis到哪里去找映射文件 -->
    <mappers>
        <mapper resource="cn/zhong/mybatis/user/Mybatis.xml"/>
    </mappers>
</configuration>

在编写一个UserController类,编写很多的方法,调用不同的接口方法(接口,不用实现,框架经帮我们实现,直接注入到spring 容器中),因为我只是学习和练习,因此只实现一个简单的功能。

package cn.zhong.mybatis.controller;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import cn.zhong.mybatis.Dao.UserDao;
import cn.zhong.mybatis.user.User;

@Controller("UserController")
public class UserController {
	
	@Resource(name="userDao")
	private UserDao userDao;	
	//单个查询
	public void selectUserById(Integer id){
		System.out.println(userDao);
	    User user = userDao.selectUserById(id);
		System.out.println(user);
	}

}

上面的准备齐全,下面开始spring框架的核心配置文件(代码中有很多注释,这儿就不多解释了) 。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

<!--自动扫描,使注解生效-->
<context:component-scan base-package="cn.zhong.mybatis.Dao"></context:component-scan>
<context:component-scan base-package="cn.zhong.mybatis.controller"></context:component-scan> 
<!-- 配置数据源 -->
<bean id = "dataSource" class="org.apache.commons.dbcp.BasicDataSource ">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <property name="url" value="jdbc:mysql:///mybatis"></property>
    <property name="username" value="root"/>
    <property name="password" value="AYZXX"/>
</bean>
<!-- 添加事物 -->
<bean id = "transactionmanager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 开启事物注解 -->
<tx:annotation-driven transaction-manager="transactionmanager"/> 
<!-- 配置mybatis工厂,同时指定数据,并与mybatis完美整合 -->
<bean id = "sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
   <!--  配置configLocation的属性为mybatis的核心配置文件 -->
    <property name="configLocation" value="classpath:sqlMapConfig.xml"></property> 
</bean>
<!-- Mapper代理开发,使用Spring自动扫描Mybatis的接口并装配额 -->
<!-- spring将指定包中所有被@mapper注解标注的接口自动装配为mybatis的映射接口 -->
<bean class = "org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- mybatis-spring组建的扫描器 -->
    <property name="basePackage" value="cn.zhong.mybatis.Dao"></property>
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean> 
</beans>

最后编写一个测试类:

package cn.zhong.mybatis.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import javax.annotation.Resource;
import javax.security.auth.login.AppConfigurationEntry;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.zhong.mybatis.Dao.UserDao;
import cn.zhong.mybatis.controller.UserController;
import cn.zhong.mybatis.user.User;

public class Demo1 {
	@Test
	public void fun1(){
		ApplicationContext aapCon = new ClassPathXmlApplicationContext("applicationContext.xml");
		UserController 	uc = (UserController) aapCon.getBean("UserController");
		uc.selectUserById(1);
	}
}

总结:这个是上一个Mybatis文件改写,与spring框架的整合,整体内容比较简单,比较容易。

源码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值