1、MyBatis特性
主要作用是连接数据库、操作数据库。
1、MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架
2、MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集
3、MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和java的POJO(Plain Old Java Object,普通的java对象)映射成数据库中的记录
4、MyBatis是一个半自动的ORM(Object Relation Mapping)框架
2、MyBatis安装
1、下载压缩包
首先在Releases · mybatis/mybatis-3 · GitHub处下载压缩包。
解压后获得的内容如下所示:
2、在idea中创建maven工程
创建一个新的空项目,新建一个maven模块。
在该模块的pom.xml文件中引入依赖
<dependencies>
<!-- Mybatis核心 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
</dependencies>
如果粘贴过去后发现爆红,可以点一下右上角的小M标志更新一下。
3、创建MyBatis的核心配置文件
习惯上命名为mybatis-config.xml。该配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息。存放位置是src/main/resources目录。其中数据库信息需要修改一下。
<?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="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/SSM? serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="abc123"/>
</dataSource>
</environment>
</environments>
<!--引入mybatis的映射文件-->
<mappers>
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
</configuration>
4、创建mapper接口
MyBatis中的mapper接口相当于以前的dao。但是区别在于,mapper仅仅是接口,我们不需要提供实现类。
5、创建MyBatis的映射文件
每一个mapper接口对应一个映射的sql语句
<?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="mybatis.mapper.UserMapper">
<!--int insertUser();-->
<insert id="insertUser">
insert into t_user values(null,'admin','123456',23,'男','12345@qq.com')
</insert>
</mapper>
6、测试功能
数据库插入一条信息
//获取核心配置文件的输入流
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//获取SqlSessionFacrotyBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//获取sql的会话对象SqlSession,是MyBatis提供的操作数据库的对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取UserMapper的代理实现类对象(通过代理模式为接口创建类实现类对象)
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调用mapper接口中的方法,实现添加用户信息的功能
int result = mapper.insertUser();
System.out.println(result);
sqlSession.close();
输出结果如下所示:
1
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8进程已结束,退出代码0
运行成功但是,数据库中并没有显示插入的数据
原因在于,数据库事务并没有提交,默认回滚。
在关闭session前增加一句手动提交事务即可解决。
//提交事务
sqlSession.commit();
7、添加日志功能
在pom.xml文件中增加依赖
<!-- log4j日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
然后,在resource里创建log4j.xml文件。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="info" />
</logger>
<root><level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>