mybatis类似于hibernate,都是简化对数据库操作的框架,但是和hibernate不同的是,mybatis更加灵活,整体来说框架更小,这体现在它需要我们手写SQL语句,而hibernate则将对数据库的操作对程序员完全透明了,程序员只需要按照面向对象的思想编写代码即可,想要看sql语句,就必须在配置文件中声明

<property name="show_sql">true</property>

  hibernate对数据库的操作封装的非常彻底,因此灵活性不高,mybatis能够实现类似于hibernate的功能,但是需要自己写sql语句,这并不表示使用mybatis更加繁琐,相反的,个人认为mybatis框架很小,配置起来也非常简单,mybatis真正优秀的地方在哪里,为什么它会越来越火?

  mybatis官方给出的mybatics 3.1.1文档中有这么一段话说出了为何mybatis这么火的原因:

  【Java EE 学习 79 上】【mybatis 基本使用方法】

  其中文意思大概就是:Mybatis提供的完整功能集能够通过使用基于“映射语言”的XML来实现,这正是Mybatis流行这么多年的原因。

  以上内容是mybatis中的“映射文件”相关的内容,从这段话中不难看出。Mybatis的核心是“映射文件”,通过该映射文件能够实现Mybatis的所有功能。其形式如上所示。

二、Mybatis的基本使用方法

   练习项目源代码:https://github.com/kdyzm/day79_1_mybatisdemo

  1.总的配置文件

    和hibernate有些相似,Mybatis中也有两种配置文件,一种配置文件是“总的配置文件”,类似于hibernate中的hibernate.cfg.xml,名字随意,但是最好起一个比较规范的名字,能够见名知意,我习惯使用mybatis-config.xml命名。在mybatis 3.1.1文档中有详细的使用说明,其提供了最简单的使用形式:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <environments default="development">
 7         <environment id="development">
 8             <transactionManager type="JDBC" />
 9             <dataSource type="POOLED">
10                 <property name="driver" value="${driver}" />
11                 <property name="url" value="${url}" />
12                 <property name="username" value="${username}" />
13                 <property name="password" value="${password}" />
14             </dataSource>
15         </environment>
16     </environments>
17     <mappers>
18         <mapper resource="org/mybatis/example/BlogMapper.xml" />
19     </mappers>
20 </configuration>

  配置文件的位置任意,但是推荐放到classpath路径下,文档中说明该文件可以放到任意位置,在windows下可以使用file:///协议直接访问,但是我没试过。

  以上内容非常简单,将对应的变量替换掉,接下来就是配置所谓的“映射文件”BlogMapper.xml。

  2.映射文件

  映射文件的写法和形式如下:

1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper
3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5 <mapper namespace="org.mybatis.example.BlogMapper">
6     <select id="selectBlog" parameterType="int" resultType="Blog">
7         select * from Blog where id = #{id}
8     </select>
9 </mapper>

  同样这也是文档中给出的例子,当然,这是最简单的例子,但是所有的配置文件中都需要对其进行配置,可以说是最核心而且是最基础的配置方式了。

  说明:

    namespace属性:命名空间,该命名空间的值任意,但是必须保证在整个项目中唯一,对应一个实体如Student,一定要有一个唯一的命名空间,所以这里直接取该实体的类名即可。

    mapper标签中的内容是所有对数据库操作的sql语句。这里的select标签表示里面的呃sql语句是查询语句,如果是update标签,表示是更新语句......

    id属性:该属性表示唯一,这自然不必说,但是该属性只是在当前Mapper标签中唯一即可。在引用该sql语句的时候,直接使用namespace+.+id来表示。

    parameterType:参数类型,这里表示的是#{id}中的id对应的参数类型。

    resultType:结果集类型,如果是Student,则不应当直接写上Student,而应当写上com.kdyzm.domain.Student,这里能够直接写上Blog是因为该Blog是已经声明了的“引用类型”。引用的写法之后再说。

三、使用Mybatis的CRUD操作。

  和hibernat相同,mybatis的CRUD操作都依赖于一个Session对象,但是该对象在mybatis中有了新名字,名为SqlSession,而且创建它使用的工厂名字也不再是SessionFactory,而是SqlSessionFactory,示例代码如下:

  获取SqlSessionFactory对象的方式:

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

  获取SqlSession对象的方式:

SqlSession session = sqlSessionFactory.openSession();

  之后就是使用Session对象的使用问题了。

  1.准备工作

  下载相关jar包并加入classpath,过程略,下载地址:https://github.com/mybatis/mybatis-3/releases

  (1)log4j配置文件

  为了方便查看控制台输出使用的log4j的配置文件:

 1 log4j.rootLogger=DEBUG, Console
 2 #Console
 3 log4j.appender.Console=org.apache.log4j.ConsoleAppender
 4 log4j.appender.Console.layout=org.apache.log4j.PatternLayout
 5 log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
 6 log4j.logger.java.sql.ResultSet=INFO
 7 log4j.logger.org.apache=INFO
 8 log4j.logger.java.sql.Connection=DEBUG
 9 log4j.logger.java.sql.Statement=DEBUG
10 log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.properties

相关文章:

  • 2021-11-14
  • 2022-12-23
  • 2022-12-23
  • 2022-01-30
  • 2021-12-08
  • 2021-07-28
  • 2021-05-13
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-07-02
  • 2022-12-23
  • 2021-12-14
  • 2022-03-08
  • 2021-11-24
  • 2022-12-23
相关资源
相似解决方案