> 文档中心 > MyBatis---------环境搭建(一)

MyBatis---------环境搭建(一)

目录

MySQL存储引擎InnoDB与Myisam

默认字符集

MyBatis使用

1.导入依赖

2.编写MyBatis核心配置文件

3.创建MyBatis工具类

4.Maven资源配置

测试

容易产生的问题:

1.配置文件没有注册

2.maven资源问题

3.绑定接接口错误

4.方法名不对

5.返回类型不对

生命周期和作用

Mybatis三个核心接口

关于@Param() 注解

 

MySQL存储引擎InnoDB与Myisam

ENGINE=INNODB 
ENGINE=MYISAM

默认字符集

DEFAULT CHARSET=utf8 

MyBatis使用

1.导入依赖

          junit     junit     4.11     test       org.mybatis     mybatis     3.5.7  <!-- 注意核新配置文件链接  为8.0.21  mysql 依赖版本为       mysql  mysql-connector-java  8.0.21       -->      mysql     mysql-connector-java     5.1.47     

2.编写MyBatis核心配置文件

db.properties

driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCusername=rootpassword=123456
                                                                                 <!-- --><!-- -->    

3.创建MyBatis工具类

public class MybatisUtils {    private static SqlSessionFactory sqlSessionFactory;    static { try {     //使用mybatis创建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(); //    return  sqlSessionFactory.openSession(true); 自动提交事务    }}

4.Maven资源配置

          src/main/resources       **/*.properties  **/*.xml  **/*.png          true       src/main/java       **/*.properties  **/*.xml          true     

测试

    @Test    public void test(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List userList = mapper.getUserList(); for (User user : userList) {     System.out.println(user); } sqlSession.close();    }

容易产生的问题:

1.配置文件没有注册

org.apache.ibatis.binding.BindingException: Type interface com.gh.dao.UserMapper is not known to the MapperRegistry. 

解决方法:

          此时是/ 不是 .    

2.maven资源问题

Could not find resource com/gh/dao/UserMapper.xml

解决方法

          src/main/resources       **/*.properties  **/*.xml  **/*.png          true       src/main/java       **/*.properties  **/*.xml          true     

3.绑定接接口错误

4.方法名不对

5.返回类型不对

生命周期和作用域

生命周期,和作用域,是至关重要的,因为错误的使用会导致非常严重的并发问题

Mybatis三个核心接口

SqlSessionFactoryBuilder:

  • 一旦创建了 SqlSessionFactory,就不再需要它了

  • 局部变量

SqlSessionFactory:

  • 说白了就是可以想象为 :数据库连接池

  • SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。

  • 因此 SqlSessionFactory 的最佳作用域是应用作用域。 application

  • 最简单的就是使用单例模式或者静态单例模式。

SqlSession

  • 连接到连接池的一个请求!

  • SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。

  • 用完之后需要赶紧关闭,否则资源被占用!

关于@Param() 注解

  • 基本类型的参数或者String类型,需要加上

  • 引用类型不需要加

  • 如果只有一个基本类型的话,可以忽略,但是建议大家都加上!

  • 我们在SQL中引用的就是我们这里的 @Param() 中设定的属性名!