目录
一、什么是MyBatis,为什么学习?怎么入门
1.1 官网学习链接:Mybatis官网
注意:
在学习这个以前最好先去找一下相关Maven项目构建的学习,以为我们的基础都是建立在maven项目的基础上
1.2 开发工具和用前准备
- idea官网去下载idea环境,idea优秀的自动补全和丰富的插件库能够很好的帮助你入门Mybatis
- 安装 MyBatisX 插件,这款插件后续会做介绍,先安装。
1.3 Mybatis说明
-
要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。
-
如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
二、开始Mybatis学习
2.1 过去的JDBC
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://(ip):3306/db1";
String username="root";
String password="****";
Connection conn = DriverManager.getConnection(url,username,password);
String sql= "UPDATE accout set money =2000 WHERE id=1";
- 在JDBC中,虽然看上去它的代码与Mybatis构建没有太大不同,但是你会发现,如果我们需要对一个数据进行更改的时候就会非常不便利,需要修改代码才能达到效果。
2.2 Mybatis取代
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
- 你会发现在上面的代码里,没有出现一个有关的信息,那是因为我们都配置到org/mybatis/example/mybatis-config.xml这里(路径随变化而变化,但是末尾是一样的),那是不是就意味着,后续需要信息修改是不是都可以通过对.xml文件进行修改,就不用查看相关代码了!我们看一下mybatis-config.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
另外,补充一点,在这里的driver,url,username等是可以自己写入或是手动进行添加的,这就减少了未来的未来维护成本
- 那么问题来了,sql代码哪里去了,我要怎么获取数据呢?,上面的mapper标签干啥用的?
2.3 sql语句xml方式写入
- 通过下面的xml,是不是就将mybatis-config.xml和BlogMapper.xml之间建立了一个内在联系。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
一个类似加载驱动,一个类型sql语句。那么如何来执行语句呢?
- 在JDBC中,我们是通过代码定义,调用**PreparedStatement(sql)**的相关方法。那么,在Mybatis中,也提供了相关类实现
//3. 获取Mapper接口的代理对象
BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
//4. 执行方法
brandMapper.deleteByIds(ids);
而类似上述的删除操作,我们是如何实现的呢?
2.4 mapper操作类实现
定义一个Mapper操作类,用来调用(sql).xml的方法定义,并对象外部的操作实现
Mapper类:
void deleteByIds(int[] ids);
(sql).xml
<delete id="deleteById">
delete from tb_brand where id = #{id};
</delete>
通过delete相同命名,实现对应,但是没有路径,怎么对应呢?
- 保证.xml文件路径和Mapper类的路径在编译后在同一目录下
2.5 工具MybatisX介绍
你有没有发现,如果来回的写.xml和Mapper类,名字要对应好是不是非常容易出错,那么插件安装后,你会发现写好类方法,或者.xml文件,就能够自动实现定位了。
三、Mybatis其他详细使用学习
3.1 学习方式
- 官网学习
- 相关课程学习
- 询问作者
3.2 学习结束语
- 或许刚开始学习框架知识,都存在一定的难度,后续包括Spring之类的框架,也都是基于xml文件配置实现,因此,打好基础,切勿急成。
- 笔记的重要性,对于自己觉得好的,一定要记下,学习完一个阶段后,写笔记同时也能够巩固,加深理解,可能不懂的,也会在这个过程中发现
- 使用框架的建议,对于一些自己很难通过手敲出的代码,特别是一些说明部分,不需要记忆,把这部分记下来,下次用的时候复制才是最好的选择,用的多了,就记住了。