本文主要是介绍mybatis原理初入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
mybatis作用:
1、封装操作数据库的JDBC
2、利用反射打通java和sql之间的相互转换
其目的在于更加方便的写出sql和获得sql返回的结果。
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><settings><setting name="cacheEnabled" value="true"/><setting name="lazyLoadingEnabled" value="false"/><!--<setting name="logImpl" value="STDOUT_LOGGING"/> <!– 打印日志信息 –>--></settings><typeAliases><typeAlias type="com.luo.dao.UserDao" alias="User"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/> <!--事务管理类型--><dataSource type="POOLED"><property name="username" value="luoxn28"/><property name="password" value="123456"/><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://192.168.1.150/ssh_study"/></dataSource></environment></environments><mappers><mapper resource="userMapper.xml"/></mappers></configuration>
以上配置中,最重要的是数据库参数的配置,比如用户名密码等,如果配置了数据表对应的mapper文件,则需要将其加入到<mappers>节点下。
其实一般情况下,数据库的用户名,密码都用一个jdbc.properties来单独写,然后在mybatis-config.xml里面引用这个jdbc.propertities,
<properties resource="jdbc.properties" />
setting设置,关系到mybatis的主要设置,关系到mybatis运行时的行为方式。这个可以参考,
mybatis学习总结-核心配置文件mybatis-config.xml(一)
这篇文章里面写的不错。
给java类型取一个别名,方便在核心配置、映射配置中来使用这个java类型。
<select id="findUserById" resultType="com.luo.dao.UserDao" parameterType="long"> select * from t_user where id = #{id}
</select>
这里可以用“User”替换掉“com.luo.dao.UserDao”。
上面配置文件中的mappers标签 , 用于引用定义好的映射定义,告诉mybatis去哪里找我们的sql定义配置。除了上面的配置方式外,还可以用其他配置,比如引用mapper接口包方式:
<mappers> <package name="com.yu.mapper"/>
</mappers>
直接告诉mabatis去这个包下面去找sql定义的xml文件。
mybatis的主要成员
mybatis底层还是采用原生jdbc来对数据库进行操作的,只是通过 SqlSessionFactory,SqlSession Executor,StatementHandler,ParameterHandler,ResultHandler和TypeHandler等几个处理器封装了这些过程。
- Configuration MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中
- SqlSession 作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能
- Executor MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护
- StatementHandler 封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数等
- ParameterHandler 负责对用户传递的参数转换成JDBC Statement 所对应的数据类型
- ResultSetHandler 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合
- TypeHandler 负责java数据类型和jdbc数据类型(也可以说是数据表列类型)之间的映射和转换
- MappedStatement MappedStatement维护一条<select|update|delete|insert>节点的封装
- SqlSource 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回
- BoundSql 表示动态生成的SQL语句以及相应的参数信息
以上主要成员在一次数据库操作中基本都会涉及,在SQL操作中重点需要关注的是SQL参数什么时候被设置和结果集怎么转换为JavaBean对象的,这两个过程正好对应StatementHandler和ResultSetHandler类中的处理逻辑。
今天先到这,下次再来说说,mybatis深入,mybatis通过接口查找到对应的mapper.xml以及方法执行。毕竟xml有两种方式嘛,第一个是直接同名的放在相应的接口类包下,第二个,通过namespace找到相应的类,然后通过相应的id找到相应的方法。
这篇关于mybatis原理初入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!