mybatis概念

MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。GitHub - mybatis/mybatis-3: MyBatis SQL mapper framework for Java

iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

mybatis基本应用

1:mybatis.jar和mysql.jar

添加jar包到构建路径中

2:MybatisConfig.xml

要求:会改即可。mybatisConfig.xml:mybatis核心配置文件    定义了数据源与实体映射配置文件(定义sql语句的xml,StuMapper.xml)


    
            
                    
                        
                        
                       
                            
                                
                          
                               
                            
                        
                
    
        
            
            
    

3:引入DAO映射xml文件




    

4:接口与实体映射文件中定义方法

package com.dao;
​
import java.util.List;
​
import com.entity.Dept;
​
public interface DeptDAO {
    List findAll();
}

5:调用类方法,实现功能。

新建main函数测试:
public static void main(String[] args) {        
    SqlSession sqlSession = null;       
    try {            
        //1:将MyBatisConfig.xml加载到流中           
        InputStream in = Test.class.getResourceAsStream("/MyBatisConfig.xml");            
        //2:调用方法读取流中的xml文件中定义的数据源封装在SqlSessionFactory类中            
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);            
        //3:调用方法获得Sqlsession对象,封装数据库连接对象            
        sqlSession = sqlSessionFactory.openSession();            
        //4:调用方法,获得StuMapper接口的代理对象            
        StuMapper stuMapper = sqlSession.getMapper(StuMapper.class);           
        List list1 = stuMapper.selAll();            
        Stu stu = stuMapper.selOne();            
        System.out.println(list1);            
        System.out.println(stu);            
        sqlSession.commit();        
    } catch (Exception e) {            
        e.printStackTrace();            
        sqlSession.rollback();        
    }finally {            
        sqlSession.close();        
    }    
}

注意:

1:流中加载MyBatisConfig文件名经常写错,必须放在src根目录 InputStream in = Test.class.getResourceAsStream("/MyBatisConfig.xml");

2:MyBatisConfig.xml忘记加载XXXXDAO.xml或者路径错误 3:DAO.xml要实现接口 4:DAO.xml文件中的语法错误

返回类型

查询方法:    
查询一行数据返回一个实体对象:使用resultType="com.entity.Stu"    
查询多行数据返回一个集合:依然使用resultType="com.entity.Stu",来定义集合的泛型    
    
    

增删改的方法:    默认返回全是boolean,可以不用定义返回类型    
        
    update stu set sname=#{sname},sbir=#{sbir},ssex=#{ssex},saddress=#{saddress} where sid=#{sid}    

参数类型

参数为实体类:
parameterType="com.entity.Stu"    
update stu set sname=#{sname},sbir=#{sbir},ssex=#{ssex},saddress=#{saddress} where sid=#{sid}    
#{属性名}:从实参中获得该属性值    
        
    update stu set sname=#{sname},sbir=#{sbir},ssex=#{ssex},saddress=#{saddress} where sid=#{sid}    

参数类型可以不用定义:使用#{arg0}、#{arg1}、#{arg2}的方式给sql语句赋值    #{arg0}:下标为0的实参    
        
    delete from stu where sid=#{arg0}    
    
       
    delete from stu where sname=#{arg1} and saddress=#{arg0}    

mybatis封装

现在:每个方法的代码都是在main函数,要封装起来,在main函数中随时调用。新建一个包:com.service:业务层包,封装具体工具,且提供事务处理(提交、回滚、关闭),新建StuService类,定义多个方法,每个方法中调用StuMapper中的方法,实现功能。问题:service每个方法中的大量代码重复,明天来继续封装。作业    新建项目,完成商品表中带商品类型id信息的增、删、查、改

你可能感兴趣的:(mybatis)