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

Mabatis入门

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

Mabatis入门

Mabatis入门

以下代码都是笔者消化以后写出的代码,如有雷同请联系笔者删除,如有错误,还望指正,笔者虚心请假。共勉

1.通过maven工程来引入mabatis依赖

    
    
      mysql
      mysql-connector-java
      5.1.47
    
    
    
    
      org.mybatis
      mybatis
      3.5.6
    
    
    
      junit
      junit
      4.12
    
  
因为后面有可能Mapper层的xml文件可能不会被读取,所以要加入Maven的一个约定熟成
  
    
      
        src/main/resources
        
          ***.xml
        
        true
      
      
        src/main/java
        
          ***.xml
        
        true
      
    
  
mybatis探究:

因为mybatis也是要和数据库打交道的,所以不会避免要与jdbc打交道,所以可以看出mybatis的工作流程基本为:

代理调用方->>mybatis->>jdbc->>sql

而内部可以得知:

  1. 获取连接
  2. 预编译sql
  3. 设置参数
  4. 执行sql

大体得知:

动态代理方->sqlsession->执行器->jdbc

所以官方通过建造者模式(selsessionFactoryBuilder)先建造一个sqlsession工厂,然后由工厂来创建sqlsession会话,来执行一系列封装了的sql语句

了解:
SqlSessionFactoryBuilder
这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。 因此 SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)。 你可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但最好还是不要一直保留着它,以保证所有的 XML 解析资源可以被释放给更重要的事情。

SqlSessionFactory
SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。 使用 SqlSessionFactory 的最佳实践是在应用运行期间不要重复创建多次,多次重建 SqlSessionFactory 被视为一种代码“坏习惯”。因此 SqlSessionFactory 的最佳作用域是应用作用域。 有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。

SqlSession
每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。 绝对不能将 SqlSession 实例的引用放在一个类的静态域,甚至一个类的实例变量也不行。 也绝不能将 SqlSession 实例的引用放在任何类型的托管作用域中
2.废话不多说,来创建一个sqlsession 2.1先编写一个Mabatis工具类来创建sqlsession
public class MybatisUtis {

    //sqlSessionFactory ->sqlSession

    private static SqlSessionFactory sqlSessionFactory;
    static {

        //加载sqlSessionFactory ,引入mybatis
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //有了工厂就可以拿到会话函数
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession(true);
        //这里的true是打开自动提交事务
    }

}
2.2有了这些还不够,我们既然使用啦数据库,所以必须要有一个数据库配置吧,换句话说,也就是要有一个Mybatis的核心配置吧

编写mybatis-config.xml






    
        

            

            

                
                
                
                
            
        
    
    
    
    
        
        
    


注:这里我是直接使用的写死,一般不推荐这种方法,可以分离一个配置文件专门来写数据库文件 2.3接口配置结束后就可以来使用了 2.3.1先编写一个实体类,对应你的数据库里面的数据
@Data
public class User{
	private String name;
	private int id;
	private String pwd;
}

注:这里使用的是一个lomlok的一个插件,可以帮助写过多的getter和setter

2.3.2编写一个接口,来写出数据库具体操作
public interface UserDao{
	List getUserList();
}
2.3.3编写接口的配置文件,也就是编写sql





    
        select * from mybatis.user
    


注:这里的namespace是你的Dao层

3.最后,做测试
@Test
public void getUserList(){
    //第一步:获得SqlSession对象
    SqlSession sqlSession = MybatisUtis.getSqlSession();

    //方式一:getMapper
    UserDao userDao = sqlSession.getMapper(UserDao.class);
    List userList = userDao.getUserList();

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

    //关闭SqlSession
    sqlSession.close();

}
总结:

mybatis就是一个封装好了sql的jdbc,先要获取sqlsessionFactory来获取sqlsession会话,然后与数据库进行交互,通过sqlsession来编写交互接口。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/602956.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号