一、准备jar包
1.mybatis.jar和mybatis-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
具体的一些信息,可以根据自己的数据库情况进行一定的修改。
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;
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 + "]";
}
}
<?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>
对于熟悉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>
<?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
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);
}
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);
}
}