Mybatis 框架详解

一、Mybatis架构

首先我们先从mybatis的整体运行体系来总观他是如何运行的,它包括如下的配置文件以及方法

  1. SqlnapConfig.xml:mybatis的全局配置文件,名称不固定,它主要包括别名、全局setting、数据源的配置以及mapper.xml的注册

  2. mapper.xml : 用于配置sql语句

  3. SqlsessionFactory:会话工厂用于创建Sqlsession,进行数据库的连接

  4. Sqlsession:面向用户的接口,是提供数据库的操作方法,他是线程不安全的,因此我们建议在方法中调用,而不是全局

  5. Executer:数据哭操作的执行器,执行sql语句

  6. MapperedStatement: mybatis 的封装对象,封装sql语句

二、创建工程

我们创建mybatis工程,导入jar包,建立好工程目录如下:

Mybatis 框架详解_第1张图片

其中我们选择mybatis3.2.7版本,导入junit是用于进行单元测试

三、编写配置文件

我们在Config 文件夹下面新建db.properties以及SqlmapConfig.xml两个文件

其中db.properties 填写数据库的各种信息,具体如下

//这些都是要根据你们自己的实际情况填的
jdbc.jdbcUrl = jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
jdbc.driverClass = com.mysql.jdbc.Driver
jdbc.user = root
jdbc.password = 168168

然后我们编写SqlmapConfig.xml文件,具体如下,我已经加好注释,相信你会懂的




    
    
    
        
    
    
        
        
        
        
    
    
    
        
            
            
            
            
                
                
                
                
            
        
    
    
    
        
    


好了 到此为止我们mybatis的配置文件就已近ok了,接下来我们就进行mapper的开发啦

四、mapper(dao层)开发

  1. 首先我们在pojo包下建立user类,这里可以用mybatis逆向工程
    package pojo;
    
    import java.util.Date;
    
    public class user {
        int id;
        String username;
        Date birthday;
        String address;
    
        public int getId() {
            return id;
        }
    
        @Override
        public String toString() {
            return "user{" +
                    "id=" + id +
                    ", username='" + username + '\'' +
                    ", birthday=" + birthday +
                    ", address='" + address + '\'' +
                    '}';
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public void setBirthday(String s) {
        }
    }
    

     

  2. 然后我们写userMapper.xml,编写sql语句,注意这里我们采用的是mapper代理开发,因此这里的namespace要是dao包下面的与mapper.xml同名的userMapper.java



  
    
    

3.接下来我们就可以写mapper的接口啦,这里有几个注意点,接口的返回值应该对应mapper.xml中的resultType,参数类型对应parameterType

package dao;


import pojo.user;

import java.util.List;

public interface userMapper {
    public user findUserById(int id) throws Exception;
    public List findUserByName(String username) throws Exception;

}

到这里mapper开发完毕,接下来我们测试一下我们的接口

六、测试接口

我们在test文件中建一个testusermapperImpl.java,这里在测试的时候我发现了报错原来上面导入jar包的时候没有导入mysql的连接包
,这里我们导入mysql的Connector 注意要用5.x的版本,否则会报错

package test;


import dao.userMapper;
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 org.junit.Before;
import org.junit.Test;
import pojo.user;

import java.io.InputStream;
import java.util.List;

public class TestUserMapperImpl {
    private SqlSessionFactory sqlSessionFactory;
    @Before
    public void setup() throws Exception{
        String resource = "Config/SqlmapConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }
    @Test
    public void TestfindUserById() throws Exception {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        userMapper userMapper =  sqlSession.getMapper(dao.userMapper.class);
        List user = userMapper.findUserByName("周");
        System.out.print(user);
    }

}

运行测,如果得到如图的结果就说明你成功啦!Mybatis 框架详解_第2张图片

源码找QQ:369212851 验证 :csdn

你可能感兴趣的:(ssm框架)