Mybatis框架的学习心得

Mybatis框架

Mybatis与hibernate的区别

Hibernate属于轻量级全自动全映射框架,sql语句也是封装处理的,如果想处理特殊的业务逻辑则需要学习hql语句,这无疑会加重我们的学习负担。

Mybatis属于轻量级半自动持久化层框架,即sql语句是由开发人员自己编写在配置文件中加载配置文件达到jdbc的作用,

Mybatis的下载地址

https://github.com/mybatis/mybatis-3

 

Mybatis的使用:第一步:我们需要一个核心配置文件:Mybatis-config.xml

最普通的配置就是




  
    
      
      
        
        
        
        
      
    
  
  
    
  
  

dataSource标签:数据源,里面写数据库的连接,驱动,账号,密码。

Mappers标签:加载所需的写入了sql语句的配置文件。

Mybatis框架使用的是面向接口编程所以我们还需要准备接口

 

package com.zking.dao;

import com.zking.pojo.User;

public interface UserMapper {
    int deleteByPrimaryKey(Integer uid);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer uid);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
}

 

第二步:写一个有sql语句的配置文件如:





    uid, username, userpwd
  
  

这个配置文件中要注意mapper标签中的 namespace要放你接口的相对路径

还有方法的id要与你的方法名相同

这个配置文件中写的是select方法需要特别注意的有sql标签以及include标签因为这两个标签与数据库的优化有关。

Select在sql语句中是经常被我们写的语句,每当类名过多时我们可能会将这些类名替换成一个*但是这种做法是不太好的,因为*在sql语句中代表的是所有,所以我们每用一次*都代表这数据库将它的所有东西都查询过了一次。所以说用*这种方法不可取,但是在SQL语句中select出现的次数又过多,如果类名比较多的话会比较麻烦,所以Mybatis框架给我们提供了一个sql标签,我们可以将这些列名存入到sql标签中然后通过include标签取出来使用。

注意:我们写jdbc时书写的sql语句进入预编译时它的占位符时?,在Mybatis中#{}代表占位符。

在Mybatis框架中关于sql配置文件还有许多标签:比如insert,delete,update即对应这CURD

这写标签中有两个属性需要注意:

result Type:这个代表着执行这个方法返回的类型

ParameterType:代表这执行这个方法需要放入的参数。

 

第三步:具体的使用

1:加载核心配置文件获得SqlSessionFactory对象

String resource = "Mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = 
				new SqlSessionFactoryBuilder().build(inputStream);

2:通过sqlsessionFactory获得sqlsession对象

SqlSession session=sqlSessionFactory.openSession();
  1. 获得接口,调用方法
try {
			UserMapper um=session.getMapper(UserMapper.class);
			User u1=um.selectByPrimaryKey(1);
			
		} catch (Exception e) {
			// TODO: handle exception
		}finally {
			session.close();
			
		}

要注意sqlsession的线程是不安全的所以sqlsession是不能共享的所以使用一次就需要关闭一次。

以上就是我初学Mybatis框架所得到的心得。

 

你可能感兴趣的:(v)