mybatis3整合spring4-采用mapper动态代理的方式开发Dao

mybatis3整合spring4-采用mapper动态代理的方式开发Dao

    最近想巩固学习mybatis的相关基础知识,下载了一套传智播客2015年的mybatis的学习,用了差不多4个晚上,终于学完了,感觉学了之后,对比与在公司参与开发的项目,觉得基础的东西又学到了许多,故而感到相当欣慰!!当然啦,刚开始看的时候,我还觉得不太乐意,因为自以为自己google搜索能力还行,有不懂的再去搜索不就行啦,后来学着学着发现原来有些东西其实自己还是不懂,一些懂的,也只是靠着自己的搜索,看看别人怎么干就怎么干,然后得到了效果,就没再理会了!!!感觉就像只“井底之蛙”啊,自信过头了,所以我觉得有时候还是放低心态,虚心求教,stay hungry,stay foolish没什么不好!至少我现在是这么认为的!!!

    好了,这篇博文我主要讲讲我学到的mybatis3整合spring4开发Dao的方法:mapper动态代理的方式。其实,我们以前开发ssh的时候,持久层框架是有hibernate来充当的,说白了,dao接口的实现类就是靠hibernate来实现的!而在mybatis,没有了“dao接口的实现类这一说法了,而换来了 mapper的动态代理,其实说白了,就是一个“xxxMapper.xml”文件。这个文件,不能小看,他其实还充当这“mybatis的二级缓存”这一角色,当然,这是后话了,各位博友可以自己去看看其他的博文。

    Mybatis整合spring,其实就是需要spring的IOC容器来管理mybatis的SqlSessionFactory,而不需要mybatis自己去管理了!接下来,咱们来瞧瞧咱们这个整合项目Mapper代理的开发(其实就是“dao接口的实现类”)。

    首先是项目的整体架构:

mybatis3整合spring4-采用mapper动态代理的方式开发Dao_第1张图片

    其中,lib文件夹存放的是整合需要的全部jar包,可以来这里下载:我上传的资源-点击获取

    首先是spring的配置文件,其实整合过程,这个配置文件是比较重要的,后面整合springmvc后,还有一个比较重要的配置文件就是springmvc的配置文件了。下面是内容:

 

    
    
        
    
    
    
    
    
     
    	
		
		
		
		
		
		
		
		
		
		
		
    
    
    
    
    	
    	
    	
    	
    	
    
    
    
    
    	
    	
    	
    	
    
	    


    下面是jdbc.properties:(注意设置为 UTF-8)

 

 

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/db_mybatis?useUnicode=true&characterEncoding=UTF-8 
jdbc.user=root
jdbc.password=123456

initialPoolSize=5

#连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,
#而是等待其他连接释放,所以这个值有可能会设计地很大,default : 15
maxPoolSize=30

minPoolSize=5

#连接池在无空闲连接可用时一次性创建的新数据库连接数,default:3
acquireIncrement=2

#连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接,单位 s
maxIdleTime=20

    mybatis配置文件:

 

 





	
	
	
		
	

	


    log4j.properties:

 

 

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# 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


    然后在mybatis数据库创建tb_user表:

 

 

DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `userName` varchar(255) DEFAULT NULL COMMENT '用户名',
  `age` int(11) DEFAULT NULL COMMENT '年龄',
  `birthday` date DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO `tb_user` VALUES ('1', '王五', '12', '2016-09-06', '北京');
INSERT INTO `tb_user` VALUES ('2', '王五', '13', '2016-09-15', '南京');

    User模型:

 

 

package com.steadyjack.model;

import java.text.SimpleDateFormat;
import java.util.Date;

public class User {
	private Integer id;
	
	private String userName;
	
	private int age;
	
	private Date birthday;
	
	private String address;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", userName=" + userName + ", age=" + age
				+ ", birthday=" +new SimpleDateFormat("yyyy-MM-dd").format(birthday) + ", address=" + address + "]";
	}

}

 

    开发UserMapper.java和UserMapper.xml:

 

package com.steadyjack.mapper;

import com.steadyjack.model.User;

public interface UserMapper {
	
	public User findUserById(Integer id);
	
}

 





	
	
	


     最后是测试:

 

 

package com.steadyjack.test;

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

import com.steadyjack.mapper.UserMapper;
import com.steadyjack.model.User;

public class UserDaoImplTest {
	
	public ApplicationContext applicationContext;
	
	@Before  
    public void before() {  
		applicationContext=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
    }  
	
	@Test
	public void testFindUserById() {
		UserMapper userMapper=(UserMapper) applicationContext.getBean("userMapper");
		User user=userMapper.findUserById(1);
		System.out.println(user);
	}

}


     会发现,启动开始会打印出一系列相关的日志信息。。。最后输出结果!

 

     好了,就介绍到这里吧!后期我会介绍spring4 springmvc4 mybatis3的整合项目!!个人QQ:1948831260

 

 

你可能感兴趣的:(ssh,ssm整合案例)