栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis入门

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis入门

Mybatis入门

先创建空的Maven项目

Maven仓库中找依赖包

先Maven的pom.xml中添加Mybatis的依赖



    4.0.0

    org.example
    Mybatis
    1.0-SNAPSHOT


    
        
            
                scr/main/resource
                
                    ***.xml
                
                true
            

            
                src/main/java
                
                    ***.xml
                
                true
            
        
    

    

    

        
            org.mybatis
            mybatis
            3.4.6
        

    

        
            mysql
            mysql-connector-java
            5.1.47
        

    
        
            junit
            junit
            4.12
            test
        

    
        
            com.github.pagehelper
            pagehelper
            5.1.10
        

    
        
            log4j
            log4j
            1.2.16
        

    
    
    
       
    
        UTF-8
    
    

在src/main/resource/下面创建mybatis-config.xml配置文件

Mybatis的核心配置文件






  
    
    		
        
            	
            
                
                
                
                
                	
                
                
                
                
                
            
        
    

    
    
        
    


编写Mybatis的工具类

package com.lzj.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;

    static{
        try {
            //获取SqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        }catch (IOException e){
            e.printStackTrace();
        }
    }

    //有了SqlSessionFactory工厂对象,就能获取SqlSession实例了
    //SqlSession包含了面向数据库执行sql命令所需要的方法
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }

}

dao接口

package com.lzj.dao;

import com.lzj.entity.User;

import java.util.List;

public interface UserDao {
    //获取所有用户对象
    List getUserList();
}

接口实现类.xml








    
    
    
        select * from mybatis.user
    

Junit单元测试

package com.lzj.dao;

import com.lzj.entity.User;
import com.lzj.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserMapperTest {
    @Test
    public void test(){

        //1. 获取SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        //2. 执行sql
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        List users= userDao.getUserList();

        for (User user : users){
            System.out.println(user);
        }

        //3. 关闭SqlSession
        sqlSession.close();

    }
}

注意点:org.apache.ibatis.binding.BindingException: Type interface com.lzj.dao.UserDao is not known to the MapperRegistry.

Mapper.xml没有在Mybatis核心配置文件中注册


    
    	    
    

还是报错

Could not find resource com/lzj/dao/UserMapper
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)

没有找到资源路径

由于Maven约定大于配置,我们写的配置文件可能到处失败,因为默认的资源目录是在resource目录下

资源过滤问题




我们发现target下面没有UserMapper.xml文件除非自己拷贝,但是每一次自己拷贝太麻烦了

解决办法,手动导入pom.xml之中


	
    	
        	scr/main/resource
            
            	***.xml
            
            true
        
        
        
        	src/main/java
            
            	***.xml
            
             true
        
    

但是又报错了

因为我们数据库里面有中文

在pom.xml里面加上

   


        UTF-8
    

最后结果

MyBatis如何执行sql语句

SqlSessionFactoryBuilder 获取SqlSessionFactory

SqlSessionFactory 获取SqlSession

SqlSession.getMapper(Dao.class) 获取接口的实现类

调用实现类的函数-----》执行sql

此外,每次执行SqlSession都要关闭


创建一个Mybatis程序的步骤
首先我们先创建一个空的Maven项目
    1.先配置pom.xml文件
    	注意事项:	
    		(1)先导入Mybatis的依赖
    		(2)标签进行resources的配置将java路径下的配置文件相当于放到resources目录下 	
    		(3)	UTF-8
    				
    				解决中文乱码编译不通过的报错
    
    2. 配置Mybatis-config.xml配置文件
    	注意事项:
    		(1) configuration核心配置文件联建数据库
    		(2)	
    				将xxxMapper.xml再核心配置文件中注册绑定,相当于告诉系统xxxMapper.xml是xxx接口的实现类
    				后期系统自动创建
    		

    3. 获取SqlSession
    	自己写一个工具列MyBatis获取SqlSession
    		SqlSessionFactoryBuilder->SqlSessionFactory->SqlSession
    
    4.	编写DAO接口
    
    5. 	编写实现类 xxxMapper.xml
    	 注意事项:
			(1)		绑定接口
            (2)	各个查询标签的id对应着接口中的方法
   
     
	 6. 如何执行sql语句
           先调用Mybatis获取SqlSession实现对象 
           sqlSession.getMapper(xxxDAO.class)获取接口的实现类
			调用实现类的的函数,------>调用sql语句












增删改查 1.namespace的绑定的包名,要和接口的包名一致 2.select 选择查询
  • id: 对应namespace的方法名

  • resultType: 返回值得类型

  • parameterType: 传递参数的类型

    举例		通过id查询user
        
        //只要该三个地方, 接口, Mapper添加一个标签, 测试了获取Sqlsession
        
       //测试类
        @Test
        public void test01(){
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            
            UserDao userDao = sqlSession.getMapper(UserDao.class);
            User user = userDao.getUserById(688);
    
            System.out.println(user);
            
            sqlSession.close();
        }
        
    	//接口
        public interface UserDao {
            //获取所有用户对象
            List getUserList();
    
            //通过id获取对象
            User getUserById(int id);
        }
    
    
    //Mapper.xml添加标签
    	   
            select * from user