初识Mybatis
传统JDBC开发模式的痛点:
连接参数、SQL语句的硬编码
数据库的频繁连接与断开
查询结果集取数据的硬编码
如:
//一旦表内容发生更改需要对Java代码进行更改,并重新编译、发布,而且这样写的过程繁琐,不易维护。while(rs.next){ Teacher teacher = new Teacher(); teacher.setNumber(rs.getInt("number")); teacher.setName(rs.getName("name")); .... list.add(teacher); }
Mybatis的优点也就显现出来:
SQL映射配置文件:将SQL语句配置在XML或其他非Java的配置文件中,这样即使SQL发生变化,也不需要重新编译Java文件。
<!--Mybatis提供了一种配置文件Mapper.xml(名字可更改),这里取名Mapper.xml, 部分代码如下--><mapper namespace="test"> <!--parameterType为输入参数的类型,resultType指定了输出结果集的Java对象类型,这里将结果参数配置表示将单条记录映射成一个Java对象--> <select id="findUserById" parameterType="int" resultType="cn.com.mybatis.model.User"> SELECT * FROM USER id=#{id} </select></mapper>
<!--在数据源配置文件如: SqlMapConfig.xml中配置Mapper.xml的文件路径--><mappers> <mapper resource="classpath:mapper/UserMapper.xml"/></mappers>
数据源配置文件
<?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="jdbc.properties"></properties> <!-- 为JAVA Bean起类别名 --> <typeAliases > <!-- 别名方式1,一个一个的配置 type中放置的是类的全路径,alias中放置的是类别名 <typeAliase type="com.cy.mybatis.beans.UserBean" alias="UserBean"/> --> <!-- 别名方式2,自动扫描,将JAVA类的类名作为类的类别名 --> <package name="com.wenyin.mybatis.beans"/> </typeAliases> <!-- 配置mybatis运行环境 --> <environments default="cybatis"> <environment id="cybatis"> <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 --> <transactionManager type="JDBC" /> <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI --> <!-- POOLED 表示支持JDBC数据源连接池 --> <!-- UNPOOLED 表示不支持数据源连接池 --> <!-- JNDI 表示支持外部数据源连接池 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <!-- 告知映射文件方式1,一个一个的配置 <mapper resource="com/cy/mybatis/mapper/UserMapper.xml"/>--> <!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件 --> <package name="com/wenyin/mybatis/mapper"/> </mappers> </configuration>
会话工厂和会话
这里最好去看英文比这好理解,SqlSessionFactory和SqlSession,上面的数据源配置文件相当于一份产品说明书,通过SqlSessionFactory查看说明书,生产出相应的产品SqlSession,所以SqlSession就是SqlSessionFactory的一个实例类Mybatis运行流程图.jpg
作者:LeaveStyle
链接:https://www.jianshu.com/p/e10a4304d23b