Maven管理Spring+Mybatis的整合

声明一下:由于一开始打算自己做个java web项目,所以在MyEclipse下搭建的maven项目。


1、配置Maven的环境

有很多教程,百度一下就可以了,在这里不详细叙说。推荐一个写的比较好的博客:http://blog.csdn.net/fengshizty/article/details/43019561

提醒一下,有的朋友是在公司,网络需要配置代理才可以连外网,在配置maven环境的时候,可以在setting.xml文件中也配置代理,这样就方便的下载相关的依赖jar包了,不然可能下载不到本地仓库。

2、创建Maven项目

1)选择maven项目

2)在Filter中输入web,选择web项目

3)输入项目名称,点击完成

3、配置POM.xml文件

在项目中,找到POM.xml文件打开,配置项目的依赖jar包

<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>com.home</groupId>
	<artifactId>Home1</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>Home1 Maven Webapp</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<jdk-version>1.8</jdk-version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
			<scope>test</scope>
		</dependency>
		<!-- spring核心包 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>4.0.2.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>4.0.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-oxm</artifactId>
			<version>4.0.2.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>4.0.2.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>4.0.2.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>4.0.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>4.0.2.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>4.0.2.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>4.0.2.RELEASE</version>
		</dependency>
		
		<!-- mybatis核心包 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.6</version>
		</dependency>
		<!-- mybatis/spring包 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.2</version>
		</dependency>

		<!-- 导入java ee jar 包 -->
		<dependency>
			<groupId>javax</groupId>
			<artifactId>javaee-api</artifactId>
			<version>7.0</version>
		</dependency>
		<!-- 导入Mysql数据库链接jar包 -->
		<dependency>
			<groupId>org.javassist</groupId>
			<artifactId>javassist</artifactId>
			<version>3.18.2-GA</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.39</version>
		</dependency>
		<!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.4</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>1.2.17</version>
		</dependency>

		<!-- 格式化对象,方便输出日志 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.1.41</version>
		</dependency>


		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.7</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.7</version>
		</dependency>
		<!-- log end -->


		<!-- 映入JSON -->
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.11</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-core-asl</artifactId>
			<version>1.9.11</version>
		</dependency>
		<!-- 上传组件包 -->
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.1</version>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.4</version>
		</dependency>
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.9</version>
		</dependency>
		

	</dependencies>
	<build>
		<finalName>Home1</finalName>
	</build>
</project>


4、配置jdbc.properties文件

为了更方便的管理项目于数据库的联系,配置jdbc.properties文件,在这里我使用的mysql数据库

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/home
username=root
password=sa123
#定义初始连接数  
initialSize=0
#定义最大连接数  
maxActive=20
#定义最大空闲  
maxIdle=20
#定义最小空闲  
minIdle=1
#定义最长等待时间  
maxWait=60000

5、配置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.home" />
	<!-- 引入配置文件 -->
	<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="${driver}" />
		<property name="url" value="${url}" />
		<property name="username" value="${username}" />
		<property name="password" value="${password}" />
		<!-- 初始化连接大小 -->
		<property name="initialSize" value="${initialSize}" />
		<!-- 连接池最大数量 -->
		<property name="maxActive" value="${maxActive}" />
		<!-- 连接池最大空闲 -->
		<property name="maxIdle" value="${maxIdle}" />
		<!-- 连接池最小空闲 -->
		<property name="minIdle" value="${minIdle}" />
		<!-- 获取连接最大等待时间 -->
		<property name="maxWait" value="${maxWait}" />
	</bean>

	<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- <property name="configLocation" value="classpath:sqlMapConfig.xml"/> -->
		<!-- 自动扫描mapping.xml文件,**表示迭代查找 -->
		<property name="mapperLocations" value="classpath:com/home/mapper/*.xml" />
	</bean>

	<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
	
	
	<!-- DAO接口所在包名,Spring会自动查找其下的类 ,包下的类需要使用@MapperScan注解,否则容器注入会失败 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.home.*" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
	</bean>

</beans>

6、编写相关代码

根据上面配置的spring-mybatis.xml文件的配置,编写相关的类和接口。

首先说一下项目的目录结构:

下一步就是编写代码:

1)先别User类

package com.home.entities;


public class User {
	
	private int id;
	
	private String userName;
	
	private String passWord;
	
	private int age;
	
	private String nackName;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassWord() {
		return passWord;
	}
	public void setPassWord(String passWord) {
		this.passWord = passWord;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getNackName() {
		return nackName;
	}
	public void setNackName(String nackName) {
		this.nackName = nackName;
	}

}

2)编写IUserDao接口

package com.home.dao;

import java.util.List;
import org.mybatis.spring.annotation.MapperScan;
import com.home.entities.User;

@MapperScan
public interface IUserDao {

	public List<User> findUsers();
	
	public String findUserNameByPassWord(String pwd);
	
	public String findPassWordByUserName(String userName);
	
	public User getUserByUerName(String userName);

}
3)编写IUserService接口

package com.home.service;

import java.util.List;
import com.home.entities.User;

public interface IUserService {
	
	public List<User> getUsers();
	
	public String findUserNameByPassWord(String pwd);
	
	public String findPassWordByUserName(String userName);

	
}
4)实现IUserService接口

package com.home.service.impl;


import java.util.List;

import javax.annotation.Resource;  



import org.springframework.stereotype.Service;

import com.home.dao.IUserDao;
import com.home.entities.User;
import com.home.service.IUserService;

  
@Service("userService")
public class UserServiceImpl implements IUserService {  
    
	@Resource
    private IUserDao userDao;

	public List<User> getUsers() {
		return this.userDao.findUsers(); 
	}

	public String findUserNameByPassWord(String pwd) {
		return this.userDao.findUserNameByPassWord(pwd);
	}

	public String findPassWordByUserName(String userName) {
		return this.userDao.findPassWordByUserName(userName);
	}

	
}  

5)编写UserMapper.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 
	例如namespace="com.home.dao.IUserDao"就是com.home.dao(包名)+IUserDao(接口) -->

<mapper namespace="com.home.dao.IUserDao">

	<!-- 返回list<User> 需要自己配置一个resultMap 如下所示 -->
	<resultMap id="user" type="com.home.entities.User">
        <id column="id" property="id" />
        <result column="user_name" property="userName" />
        <result column="pass_word" property="passWord" />
        <result column="neck_name" property="neckName" />
        <result column="age" property="age" />
    </resultMap>
    
	<!-- 这里的id必须和UserMapper接口中的接口方法名相同 -->
	<select id="findUsers" resultMap="user">
		select 
			user_name as userName,
			id as id,
			pass_word as passWord,
			age as age,
			neck_name as nackName
		from 
			user_table;
	</select>
	
	<select id="findUserNameByPassWord" parameterType="java.lang.String" resultType="string">
		select 
			user_name
		from 
			user_table
		where
			pass_word = #{pwd};
	</select>
	
	<select id="findPassWordByUserName" parameterType="java.lang.String" resultType="string">
		select
			pass_word
		from
			user_table
		where
			user_name = #{userName}
	
	</select>
	
	<select id="getUserByUerName" resultType="com.home.entities.User">
		select 
			user_name as userName,
			id as id,
			pass_word as passWord,
			age as age
		from 
			user_table;
	</select>
</mapper>

完成上面的5步,就把整个项目搭建好了。

7、编写测试

在src/test/java文件夹下创建一个测试类

package com.home.test;

import java.util.List;

import javax.annotation.Resource;  

import org.apache.log4j.Logger;  
import org.junit.Test;  
import org.junit.runner.RunWith;  
import org.springframework.test.context.ContextConfiguration;  
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  
import com.home.entities.User;
import com.home.service.IUserService;

@RunWith(SpringJUnit4ClassRunner.class)//表示继承了SpringJUnit4ClassRunner类  
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})  
  
public class TestMyBatis {  

	private static Logger logger = Logger.getLogger(TestMyBatis.class);  

    @Resource  
    private IUserService userService = null;  
    
    @Test  
    public void test1() {  
    	List<User> list = userService.getUsers();
    	System.out.println(list.get(0).getUserName());
    }  
}  

运行测试即可。

相应的源码地址:http://download.csdn.net/detail/u011359903/9769949

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值