MyBatis:配置之一

MyBatis

  • MyBatis——半自动
  • Hibernate——全自动、轻量级框架

步骤

  1. 根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象
  2. sql映射文件:配置了每一个sql,以及sql的封装规则
  3. 将sql映射文件注册在全局配置文件中。
  4. 写代码
    1. 根据全局配置文件得到SqlSessionFactory
    2. 通过sqlSessionFactory获取SqlSession实例,使用它进行增删改查
    3. 使用sql的唯一标识来告诉MyBatis来执行哪个sql
//第一个MyBatis程序
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//通过sqlSessionFactory获取SqlSession实例,他能直接执行映射好的sql语句
SqlSession openSession;
openSession = sqlSessionFactory.openSession();
try {
   Guild guild = openSession.selectOne("com.boerk.mybatis.GuildMapper.selectGuild", 1);
   System.out.println(guild);
} finally {
   openSession.close();
}
  1. 创建一个接口并将它与映射xml(非全局配置文件)进行动态绑定。
    1. GuildMapper接口中创建getGuildId方法
    2. namespace直接写成接口的全类名<mapper namespace="com.boerk.mybatis.DAO.GuildMapper">
    3. select标签的id改为getGuildId

步骤

  1. 获取sqlSessionFactory对象(抽取了GetSqlSessionFactory()方法)

  2. 获取sqlSession对象sqlSessionFactory.openSession()

  3. 获取接口的实现类对象

    GuildMapper mapper = sqlSession.getMapper(GuildMapper.class);
    
  4. 调用接口的方法传入参数然后获取对象。

    Guild guild = mapper.getGuildId(2);
    

两个重要的配置文件

  1. mybatis全局配置文件(mybatis-config)

    • 包含数据库连接池信息,事务管理信息等。
  2. sql映射文件

    • 保存了每一个sql语句映射信息

MyBatis配置文件

  • properties:MyBatis可以通过properties来引入外的的properties配置文件

    • resource:引入路径下的资源
    • url:映入网络路径或者磁盘路径的资源

    可以将jdbc配置信息写在外面,并通过properties引入

  • settings中包含了许多的设置项

    • 通过mapUnderscoreToCamlCase可以将MySQL中的下划线转为Java里的驼峰命名法。
  • typeAliases:别名处理器。给全类名起一个别名

    • type:需要起别名的类的全类名
    • alias:别名
    • package:为一个包下的所有类批量起别名
      • name:指定报名(为当前包及后代包起一个默认别名)
      • 默认别名为类名的小写
      • 嗯…别名不区分大小写
    • 使用注解@Alias()也可以给类起别名
    • 还是建议使用全类名
  • typeHandlers:类型处理器

  • plugins:插件。Mybatis可以拦截sql语句。

  • environment:环境。必须有transacitionMapper和dataSource标签

  • mapper:注册。

    • 可以使用class通过注解的方式,将sql写在接口上。

      @Select(" select * from guild where guild_id = #{id}")
      public Guild getGuildId(Integer id);
      
    • 推荐:重要的、复杂的Dao接口来写开发文件

    • 推荐:不重要的、简单的通过注解来写sql

    • 使用package可以批量注册。

posted @ 2022-01-07 23:58  Boerk  阅读(60)  评论(0)    收藏  举报