一、Mybatis介绍
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
二、Mybatis的快速入门
先在eclipse中新建一个java工程,然后需要我们添加jar包
create database mybatis; use mybatis; CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT); INSERT INTO users(NAME, age) VALUES(‘Tom‘, 12); INSERT INTO users(NAME, age) VALUES(‘Jack‘, 11);
接下来开始添加mybatis中的配置文件conf.xml,在src目录下创建一个conf.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>
<properties resource="db.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
</dataSource> </environment> </environments> <!-- 把映射文件引入到配置文件中 --> <mappers> <mapper resource="com/zhiyou100/wyf/mapper/UsersMapper.xml"/> <mapper resource="com/zhiyou100/wyf/mapper/OrdersMapper.xml"/> </mappers> </configuration>
然后我们定义与表所对应的的实体类
public class User private int id; private String name; private int age; //get,set 方法
定义操作users表的sql映射文件userMapper.xml
创建一个mapper包,专门用于存放sql映射文件,在包中创建一个userMapper.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">
<!-- namespace:表示名称空间。现在的目的是区分id的. -->
<mapper namespace="com.zhiyou100.wyf.mapper.UsersMapper">
<!-- 根据id查询用户。id:标识该标签。
parameterType:参数类型。可以写 也可以省略
resultType:返回结果的类型。
#id:类似于EL表达式。 解析id的值
-->
<select id="getUser" parameterType="int" resultType="com.zhiyou100.wyf.bean.Users">
select * from users where id = #id
</select>
</mapper>
在conf.xml文件中注册userMapper.xml文件
编写单元测试来检验代码
package com.test; import static org.junit.jupiter.api.Assertions.*; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import com.zhiyou100.wyf.bean.Users; class TestMy static SqlSession session = null; static String str ="com.zhiyou100.wyf.mapper.UsersMapper"; @BeforeAll static void setUpBeforeClass() throws Exception //解析配置文件conf.xml Reader reader = Resources.getResourceAsReader("conf.xml"); //获取SessionFactory对象 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); session=sessionFactory.openSession(); @Test void testck() Users users = session.selectOne(str+".getUser",2); System.out.println(users); @AfterAll static void tearDownAfterClass() throws Exception session.commit();
提示:session.commit(); 代表所有的sql语句在最后编译完成之后手动提交;
可以添加日志来查看运行过程,引入jar包
然后引入日志文件log4j.properties
log4j.properties, log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG
查询完成