`

spring+mybatis初探

 
阅读更多

一、准备jar

 
1.mybatis.jarmybatis-spring.jar官方下载地址:

 http://code.google.com/p/mybatis/

2.spring的所有jar

3.数据库驱动jar

4.junit测试jar

5.log4j日志jar

二、配置文件

1. 数据库连接基本信息jdbc.properties放在src

driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:oralsb
username=scott
password=tiger
maxActive=255
maxIdle=20
maxWait=100

 

具体的一些信息,可以根据自己的数据库情况进行一定的修改。

2.在数据库中创建表与及相应的序列

CREATE TABLE T_USER
(
       ID INT PRIMARY KEY,
       NAME VARCHAR2(15),
       PASSWORD VARCHAR2(20)
);

CREATE SEQUENCE T_USER_SEQ START WITH 1 INCREMENT BY 1 NOCACHE;

COMMIT;

 

3.创建相应的JavaBean

package com.springmybatis.model;

public class User {
	private int id;
	private String name;
	private String password;

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
	}

}

 

4.准备表的映射文件User.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="com.springmybatis.model.User">

	<resultMap id="userMap" type="User">
		<id column="id" property="id" />
		<id column="name" property="name" />
		<id column="password" property="password" />
	</resultMap>

	<select id="getUser" parameterType="int" resultMap="userMap">
		SELECT * FROM T_USER WHERE ID = #{id}
	</select>

	<insert id="addUser" parameterType="User">
		INSERT INTO T_USER
		  (ID, NAME, PASSWORD)
		VALUES
		  (T_USER_SEQ.NEXTVAL, #{name, jdbcType=VARCHAR}, #{password, jdbcType=VARCHAR})
	</insert>

	<update id="updateUser" parameterType="User">
		UPDATE T_USER SET NAME = #{name, jdbcType=VARCHAR}, PASSWORD = #{password, jdbcType=VARCHAR} WHERE ID = #{id, jdbcType=INTEGER}
	</update>

</mapper>

 

5. 总配置文件sqlMapConfig.xml

对于熟悉Mybatis这个orm框架的肯定知道,一般都需要一个对数据库操作的总配置文件。

<?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 alias="User" type="com.springmybatis.model.User" />
	</typeAliases>

	<mappers>
		<mapper resource="com/springmybatis/model/User.xml" />
	</mappers>
	
</configuration>

 

6.spring配置文件beans.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:context="http://www.springframework.org/schema/context"
	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">

	<!-- 添加扫描包 -->
	<context:component-scan base-package="com.springmybatis" />

	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:jdbc.properties</value>
			</list>
		</property>
	</bean>

	<bean id="dataSource" destroy-method="close"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="${driverClassName}" />
		<property name="url" value="${url}" />
		<property name="username" value="${username}" />
		<property name="password" value="${password}" />
		<!-- 最大连接数量 -->
		<property name="maxActive" value="${maxActive}" />
		<!-- 最大空闲连接数量 -->
		<property name="maxIdle" value="${maxIdle}" />
		<property name="maxWait" value="${maxWait}" />
		<property name="validationQuery" value="select count(1) from Dual" />
		<!-- test when get connection -->
		<property name="testOnBorrow" value="true" />
		<!-- test when return connection to pool -->
		<property name="testOnReturn" value="true" />
		<property name="testWhileIdle" value="true" />
	</bean>

	<!-- 创建sqlSessionFactory,同时指定数据源 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="classpath:sqlMapConfig.xml" />
	</bean>
	
	<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg index="0" ref="sqlSessionFactory" />
	</bean>

</beans>

 

7.编写相应的DAO

7.1 IUserDAO.java

package com.springmybatis.dao;

import com.springmybatis.model.User;

public interface IUserDAO {
	
	public boolean addUser(User user);

	public boolean updateUser(User user);
	
	public User getUser(int id);

}

 

7.2 UseDAOImpl.java

package com.springmybatis.dao;

import javax.annotation.Resource;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Component;

import com.springmybatis.model.User;

@Component("userDAO")
public class UserDAOImpl implements IUserDAO {

	private SqlSessionTemplate sqlSessionTemplate;

	public SqlSessionTemplate getSqlSessionTemplate() {
		return sqlSessionTemplate;
	}

	@Resource(name="sqlSessionTemplate")
	public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
		this.sqlSessionTemplate = sqlSessionTemplate;
	}

	@Override
	public boolean addUser(User user) {
		int result = sqlSessionTemplate.insert("com.springmybatis.model.User.addUser", user);
		return result != 0;
	}

	@Override
	public boolean updateUser(User user) {
		int result = sqlSessionTemplate.update("com.springmybatis.model.User.updateUser", user);
		return result != 0;
	}

	@Override
	public User getUser(int id) {
		User user = sqlSessionTemplate.selectOne("com.springmybatis.model.User.getUser", id);
		return user;
	}

}

 

三、日志文件配置

1. 日志文件配置log4j.properties放在src

log4j.rootLogger=DEBUG, stdout, fileout
#log4j.logger.test=info
#log4j.logger.org.apache.jasper = DEBUG
#log4j.logger.org.apache.catalina.startup.TldConfig = DEBUG
#log4j.logger.org.apache.catalina.session.ManagerBase = DEBUG

log4j.logger.com.fiscal = DEBUG
log4j.logger.com.system = DEBUG

log4j.logger.com.ibatis = DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG
log4j.logger.java.sql.ResultSet = DEBUG

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.fileout=org.apache.log4j.RollingFileAppender
log4j.appender.fileout.File=C:\\ibatis.log
log4j.appender.fileout.MaxFileSize=10000KB

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %m%n
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout 
log4j.appender.fileout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %m%n

 

2.web.xml添加如下配置

<!-- Log4j 配置 -->
<context-param>
	<param-name>log4jRefreshInterval</param-name>
	<param-value>60000</param-value>
</context-param>
<listener>
	<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

 

四、测试

package com.springmybatis.test;

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

import com.springmybatis.dao.IUserDAO;
import com.springmybatis.dao.UserDAOImpl;
import com.springmybatis.model.User;

public class UserTest {
	
	@Test
	public void testAddUser() {
		ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
		IUserDAO userDAO = context.getBean("userDAO", UserDAOImpl.class);
		User user = new User();
		user.setName("李四");
		user.setPassword("12345");
		boolean result = userDAO.addUser(user);
		System.out.println(result);
	}
	
	@Test
	public void testUpdateUser() {
		ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
		IUserDAO userDAO = context.getBean("userDAO", UserDAOImpl.class);
		User user = new User();
		user.setId(1);
		user.setName("李四123456789");
		user.setPassword("54321");
		boolean result = userDAO.updateUser(user);
		System.out.println(result);
	}
	
	@Test
	public void testGetUser() {
		ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
		IUserDAO userDAO = context.getBean("userDAO", UserDAOImpl.class);
		User user = userDAO.getUser(1);
		System.out.println(user);
	}
	
}

 

  • 大小: 16 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics