设为首页 加入收藏

TOP

Mybatis基础操作
2015-11-21 01:43:59 来源: 作者: 【 】 浏览:0
Tags:Mybatis 基础 操作

Mybatis前身是Ibatis,Ibatis是apache的一个顶级开源项目。2010年迁移到Google code,更名为Mybatis。Mybatis说起来也算的是一个基本的ORM,但是现对于Hibernate来说,就术语半自动的了,只是对数据的映射,没有涉及到sql的映射。

有了基本认识后咱们就切入正题了。

?

基本架构如下图

\

?

Mabytis配置,其中sqlMapConfig是全部配置文件,配置运行环境,而mapper为sql映射文件,此文件需要全局文件加载通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行,mybatis底层自定义了Executor执行器接口操作数据库 Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mappedstatement的id

?

搭建Mybatis环境

?

下载mybatis,https://github.com/mybatis/mybatis-3/releases,该文档中使用的是3.2.7

需要依赖的包有

mybatis-3.2.7.jar----mybatis的核心包

lib----mybatis的依赖包

?

?

1 创建配置文件

创建log4j.properties文件,创建sqlMpaConfig.xml,因为mybatis依赖包中有log4j,所以需要配置属性文件

sqlMapConfig文件内容可以从mybatis包中说明文档中进行进行复制

?

sqlMapConfig 文件

?


  


  

	
   
	
   
		
   
		
	
   
	
    
     
     
    
   
	
	
	
   
	
    
     
      
      
       
       
        
         
          
           
          
         
        
       
       
     
     
   

	
    
     
     
    
   

  

?

db.properties文件

该文件是配置数据库信息文件

?

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=mysql

?

Logo4J文件

?

log4j.rootLogger=DEBUG, stdout
# 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

?

2 创建映射文件

映射文件的创建有两种方式,一种是ibatis原始方式,一种是mapper代理方式。问文档采用mapper代理方式

映射文件userMapper

?


  


  

  


	
   
	
   
	
   
	
   


  

?

3 编写Mapper接口

UserMapper 接口

?

package com.tgb.mybatis.mapper; 

import com.tgb.mybatis.po.User;

/**
 * mapper接口相当于userdao
 *
 * @author hanyk
 * @version 1.0.0 , 2015年8月20日 下午7:51:44
 */
public interface UserMapper {

	
	//根据id 查询用户信息
	public User findUserById(int id)throws Exception; 
	
}

?

使用Mapper代理开发,只需要编写Mapper接口,不需要写实现代码,原理是mybatis内部根据接口生成代理对象,org.mybatis.spring.mapper.MapperFactoryBean

?

要求:

Mapper.xml文件中的namespace与mapper接口的类路径相同。

Mapper接口方法名和Mapper.xml中定义的每个statement的id相同

Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同

Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

?

测试:

?

?

	private SqlSessionFactory sessionFactory;
	private String url = "SqlMapConfig.xml";

	@Before
	public void setUp() throws IOException {
		// 创建sqlsessionfacotry

		InputStream inputStream = Resources.getResourceAsStream(url);
		// 创建会话工厂
		sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

	}

	//根据id 查询对象
	@Test
	public void testFindUserbyId() throws Exception {

		SqlSession session = sessionFactory.openSession();

		// 创建usermapper对象,自动生层代理对象
		UserMapper userMapper = session.getMapper(UserMapper.class);

		User user = userMapper.findUserById(1);
		session.close();//释放资源
		System.out.println(user);
	}

?

输出结果:

User [id=1, username=张宏民, sex=2,birthday=Thu Aug 20 00:00:00 CST 2015, address=廊坊市气象局]

?

小结:

Mybatis上手简单,主要是在于对sql语句的编写,相对于Hibernate重量级ORM框架,mybaits专注与sql本身,需要自己编写slq,适应希求变化较多的项目。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇简单介绍redis以及ubuntu和window.. 下一篇日志表设计一例分析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: