spring3.2.4+mybatis3.2.3在maven下的整合

最近在自学spring,看到第五章时发现文章里介绍的只有基于jdbc,hibernate等于spring的整合,而本白项目中mybatis用的比较多,所以就自己动手整合了一下,中间也遇到了一些小麻烦,但最终还是完成了。特此记录。

项目目录结构:


首先,新建一个maven项目(不会新建maven的请点此链接:点我进链接)。然后是配置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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>MavenDemo</groupId>
	<artifactId>springAndMybatis</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springAndMybatis</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>

		<!-- spring相关jar包 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>3.2.4.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>3.2.4.RELEASE</version>
		</dependency>

		<!-- mybatis相关jar包 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.3</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.1</version>
		</dependency>

		<!-- 数据源druid jar包 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.11</version>
		</dependency>
		
		<!-- log4j日志jar包 -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>
		
		<!-- mysql驱动jar包 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.0.2</version>
		</dependency>
	</dependencies>

</project>

所需jar包都准备齐全之后,开始构建项目。spring配置文件applicationContext.xml:

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

    <!-- 加载数据库连接信息属性文件 -->
	<context:property-placeholder location="classpath:config/db.properties" />

	<!-- 启用注解机制,并自动扫描 -->
	<context:component-scan base-package="MavenDemo.springAndMybatis" />

	<!-- 数据源配置 -->
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
		<property name="url" value="${db.url}"></property>
		<property name="username" value="${db.username}"></property>
		<property name="password" value="${db.password}"></property>
	</bean>

	<!-- SQLSessionFactory配置,此配置将自动扫描指定路径下的sqlmap xml文件 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="mapperLocations" value="classpath:config/sqlmap/*.xml"></property>
	</bean>

	<!-- mybatis-spring 自动实现dao实现类的编写 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="MavenDemo.springAndMybatis" />
		<property name="annotationClass" value="org.springframework.stereotype.Repository" />
<!-- 		<property name="sqlSessionFactoryBeanName" ref="sqlSessionFactory" /> -->
	</bean>

</beans>
此处sqlmap的xml文件都是自动扫描的,所以并不需要创建mybatis的mapper配置文件,如需了解非扫描型的配置请参见:点我进链接

db.properties:

<span style="font-size:10px;">db.url=jdbc:mysql://127.0.0.1:3306/pay
db.driverName=com.mysql.jdbc.Driver
db.username=root
db.password=auto102360</span>
log4j.properties(此文件放在src目录下即可):

<span style="font-size:10px;">### Global logging configuration
log4j.rootLogger=DEBUG, stdout

### Uncomment for MyBatis logging
log4j.logger.org.apache.ibatis=INFO

### Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n</span>
 MenuItem.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="MavenDemo.springAndMybatis.MenuItemDao">
	<select id="getAll" resultType="MavenDemo.springAndMybatis.Menuitem">
		SELECT * FROM menuitem
	</select>
	<select id="getMenuById" parameterType="java.lang.String"
		resultType="MavenDemo.springAndMybatis.Menuitem">
		SELECT * FROM menuitem where menuitemnbr = #{id}
	</select>
</mapper>
MenuItemDao.java:

package MavenDemo.springAndMybatis;

import java.util.List;

import org.springframework.stereotype.Repository;

@Repository
public interface MenuItemDao {
	
	public List<Menuitem> getAll();
	
	public Menuitem getMenuById(String id);

}

Menuitem.java:

<span style="font-size:10px;">package MavenDemo.springAndMybatis;

import java.util.Date;

public class Menuitem {
    
    private Long menuitemnbr;

    private String menuitemdesc;

    private String menuitemurl;

    private String imagename;

    private Long parentmenuitemnbr;

    private Date datelastmaint;

    private Integer menuitemlevnbr;

    private String authitemcd;

    private String template;

    public Long getMenuitemnbr() {
        return menuitemnbr;
    }

    public void setMenuitemnbr(Long menuitemnbr) {
        this.menuitemnbr = menuitemnbr;
    }

    public String getMenuitemdesc() {
        return menuitemdesc;
    }

    public void setMenuitemdesc(String menuitemdesc) {
        this.menuitemdesc = menuitemdesc;
    }

    public String getMenuitemurl() {
        return menuitemurl;
    }

    public void setMenuitemurl(String menuitemurl) {
        this.menuitemurl = menuitemurl;
    }

    public String getImagename() {
        return imagename;
    }

    public void setImagename(String imagename) {
        this.imagename = imagename;
    }

    public Long getParentmenuitemnbr() {
        return parentmenuitemnbr;
    }

    public void setParentmenuitemnbr(Long parentmenuitemnbr) {
        this.parentmenuitemnbr = parentmenuitemnbr;
    }

    public Date getDatelastmaint() {
        return datelastmaint;
    }

    public void setDatelastmaint(Date datelastmaint) {
        this.datelastmaint = datelastmaint;
    }

    public Integer getMenuitemlevnbr() {
        return menuitemlevnbr;
    }

    public void setMenuitemlevnbr(Integer menuitemlevnbr) {
        this.menuitemlevnbr = menuitemlevnbr;
    }

    public String getAuthitemcd() {
        return authitemcd;
    }

    public void setAuthitemcd(String authitemcd) {
        this.authitemcd = authitemcd;
    }

    public String getTemplate() {
        return template;
    }

    public void setTemplate(String template) {
        this.template = template;
    }
}</span>

至此,项目已经搭建完毕,下面用测试验证一下:

App.java:

package MavenDemo.springAndMybatis;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Hello world!
 *
 */
public class App 
{
	
    public static void main( String[] args )
    {
    	long t1 = System.currentTimeMillis();
        ApplicationContext ac = new ClassPathXmlApplicationContext("config/applicationContext.xml");
        MenuItemDao dao = ac.getBean(MenuItemDao.class);
        /*List<Menuitem> allMenu = dao.getAllMenu();
        for (Menuitem menu : allMenu) {
        	
			System.out.println(menu.getMenuitemdesc());
			
		}*/
        Menuitem menu = dao.getMenuById("100100000");
        long t2 = System.currentTimeMillis();
        System.out.println(menu.getMenuitemdesc());
        System.out.println(t2 - t1);
    }
}
控制台将打印:


再看数据库中数据:

结果一致,测试成功!

本人也是小白一枚,如有不足之处,欢迎评论指正。






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值