一、Mybatis使用示例
我们先先一个简单的例子,对Mybatis使用有一个直观的认识。
1.新建mybatis配置文件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> <!-- 环境,可以配置多个,default:指定采用哪个环境 --> <environments default="test"> <!-- id:唯一标识 --> <environment id="test"> <!-- 事务管理器,JDBC类型的事务管理器 --> <transactionManager type="JDBC" /> <!-- 数据源,池类型的数据源 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://xxx/testdb" /> <property name="username" value="xxx" /> <property name="password" value="xxx" /> </dataSource> </environment> </environments> <mappers> <mapper resource="UserMapper.xml" /> </mappers> </configuration>
2.生成model文件User.java和配置文件UserMapper.xml
package last.soul.model; import lombok.Data; @Data public class User { private Long id; private String name; private String nickName; private Integer age; private Byte sex; }
<?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="last.soul.mapper.UserMapper"> <resultMap id="BaseResultMap" type="last.soul.model.User"> <id column="id" jdbcType="BIGINT" property="id" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="nick_name" jdbcType="VARCHAR" property="nickName" /> <result column="age" jdbcType="INTEGER" property="age" /> <result column="sex" jdbcType="TINYINT" property="sex" /> </resultMap> <select id="selectById" parameterType="java.util.Map" resultType="last.soul.model.User"> select * from user where id = #{id} </select> </mapper>
3.编写测试代码UserTest.java
public class UserTest { @Test public void test() throws IOException { String resource = "file/mybatis-config.xml"; // 读取配置文件 InputStream inputStream = Resources.getResourceAsStream(resource); // 构建sqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //获取sqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); //构建参数 Map map=new HashMap<>(); map.put("id",1); //执行sql,并返回结果 User user=sqlSession.selectOne("last.soul.mapper.UserMapper.selectById",map); Assert.assertTrue(user.getId()==1); } }
运行成功,由上面代码看出,Mybatis执行流程主要有以下几步:
1.读取配置文件。
2.构建sqlSessionFactory。
3.获取sqlSession。
4.执行sql,并返回结果。
二、Mybatis整体架构
Mybatis整体架构分三层,分别是基础支持层、核心处理层和接口层。上面的第1步属于基础支持层的资源加载模块,第2,3步属于接口层,第4步属于核心处理层。
后续的文章会详解每个模块。