Spring框架基础(六)之mybatis框架基础

mybatis入门基础

      • 1. mybatis定义:
      • 2. mybatis 架构的核心构成
      • 4. mapper 映射器规则
      • 5.多个参数的传递问题
        • 6.当表中字段和实体类中的属性值不一致是,解决方法(请尽量保持一致)

1. mybatis定义:

mybatis 是一个支持普通SQL查询,存储过程和高级映射(ORM)的持久层框架。

它封装了几乎所有的JDBC代码和参数的手工设置。

2. mybatis 架构的核心构成

Java中的实体bean;
SQL定义文件 mapper.xml主要用来定义SQL语句的

  



		
    
    
    
    
     
        update  xdl_bank_account_23 set acc_password = #{acc_password}  
            where id = #{id} 
    

mybatis 的主配置文件sqlmap-config.xml 定义链接数据库信息和加载SQL定义文件

 
 

	
		
			
			
				
				
				
				
			
		
	
	
		
	
 

mybatis 的API 通过SqlSession体现,可封装成工具类调用,如下:

public class SqlSessionUtil {
	private static SqlSessionFactory ssf = null;
	static {
		// 构建一个SqlSession工厂的构建器
		SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
		// 得到 SqlSession 工厂 需要关联 src下主配置文件对应的流
		InputStream inputStream = User.class.getClassLoader().getResourceAsStream("sqlmap-config.xml");
		ssf = ssfb.build(inputStream);
	}
	public  static  SqlSession getSqlSession(){
		return  ssf.openSession();
	}
	class user{}
}

4. mapper 映射器规则

就是可以 根据接口 自动生成实现类 ,但须注意以下点:

  1. sql 定义文件的id作为接口的方法名,parameterType的值 作为方法的参数类型
  1. resultType的值 作为方法的返回值类型,如果返回多个值 用List
    如果是增删改,可以使用int或者void.如果是增删改,可以使用int或者void.
  2. Sql 定义文件中的namespace 必须是“包名 . 接口名 ”

5.多个参数的传递问题

  1. 使用Map类型 或者对象类型的参数 来封装多个参数 如:


/* 构建一个Map类型的一个参数*/
Map parames = new HashMap();
parames.put("no",10000);
parames.put("password" , "abc123");
BankUser  user  = SqlSession对象 . selectOne("findByNoAndPassword" , parames);

当返回值类型是一个值是用selectOne()方法,多个值时用selectList()方法

  1. 但设计多个参数时 parameterType 可不写,参数位置可直接写
    #{0 } #{1 } 或者#{parame1} #{parame2} 或者使用注解@param(“参数名”)

6.当表中字段和实体类中的属性值不一致是,解决方法(请尽量保持一致)

  1. 使用sql 语句的别名 统一数据库中字段和实体类中的属性名 , 如:
	
  1. 使用resultMap 来指定表中字段名和实体类属性对应关系,不可与resultType同时使用,如:

	
	
	
	


#### 7. 

你可能感兴趣的:(笔记,mybatis框架)