Mybatis一
来源:互联网 发布:可利电气经营数据 编辑:程序博客网 时间:2024/06/11 05:38
Mybatis架构
1、 mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。 mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。 此文件需要在SqlMapConfig.xml中加载.2、 通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂3、 由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。4、 mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现, 一个是基本执行器、一个是缓存执行器。5、 Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。 mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。6、 Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor 通过 Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc 编程中对preparedStatement设置参数。7、 Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过 Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程 中对结果的解析处理过程。
mybatis核心包、依赖包、数据驱动包
ant-1.9.6.jarant-launcher-1.9.6.jarasm-5.2.jarcglib-3.2.5.jarcommons-logging-1.2.jarjavassist-3.21.0-GA.jarjunit-4.9.jarlog4j-1.2.17.jarlog4j-api-2.3.jarlog4j-core-2.3.jarmybatis-3.4.4.jarmysql-connector-java-5.1.7-bin.jarognl-3.1.14.jarslf4j-api-1.7.25.jarslf4j-log4j12-1.7.25.jar
<!-- id:sql语句唯一标识 parameterType:指定传入参数类型 resultType:返回结果集类型 #{}:启动占位作用,如果传入的是基本类型,那么名称随意 --> ${}拼接符:字符串原样拼接如果传入的是基本类型,那么${}中的变量名必须是value 注意:使用拼接符有可能造成sql注入,在页面输入的时候可以加入校验,不可输入sql关键字,不可输入空格
会话工厂
private SqlSessionFactory sqlSessionFactory = null; @Before public void create SqlSessionFactory() throws Exception { // 配置文件 String resource = "SqlMapConfig.xml"; // 通过流将核心配置文件读取进来 InputStream inputStream = Resources.getResourceAsStream(resource); // 通过核心配置文件输入流来创建会话工厂 sqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); // 通过工厂创建会话 sqlSession = sqlSessionFactory.openSession(); // 第一个参数:调用的sql语句= namespace.Id User user = sqlSession.selectOne("test.findUserById", 10); }
Mapper动态代理方式
映射文件
<!-- mapper接口代理实现编写规则: 1. 映射文件中的namespace要等于接口的全路径名称 2. 映射文件中sql语句的id要等于接口的方法名称 3. 映射文件中传入参数类型要等于接口方法的传入参数类型 4. 映射文件中返回结果集类型等于接口方法的返回值类型 --><mapper namespace="com.bf.mapper.UserMapper">
通过getMapper方法实例化接口
session = factory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class);
加载映射文件
<!-- 使用class属性引入接口的全路径名称 使用规则:1. 接口名称和映射文件名称除扩展名外要完全相同 2. 接口和映射文件要放在同一个目录下 --> <mapper class="com.bf.mapper.UserMapper"/>
// 动态代理形式中,如果返回结果集为List,那么mybatis会在生成的实现类中自动使用selectList方法 List<User> findUsersByName(String name);
SqlMapConfig.xml配置文件
configuration 配置properties 属性settings 设置typeAliases 类型命名typeHandlers 类型处理器objectFactory 对象工厂plugins 插件environments 环境environment 环境变量transactionManager 事务管理器dataSource 数据源databaseIdProvider 数据库厂商标识mappers 映射器
<typeAliases> <!-- 使用包扫描的方式批量定义别名(按java命名规则来) --> <package name="com.bf.pojo"/> </typeAliases>
<mappers> <!-- 使用包扫描的方式批量引入mapper接口 --> <package name="com.bf.mapper"/> </mappers>
阅读全文
0 0
- Mybatis(一)
- mybatis (一)
- Mybatis(一)
- Mybatis(一)
- Mybatis一
- mybatis(一)
- MyBatis(一)
- Mybatis(一)
- [MyBatis]MyBatis入门(一)
- Mybatis+eclipse+MySql(一)
- mybatis学习一
- Mybatis学习日记(一)
- mybatis学习(一)
- mybatis(一)
- mybatis一---入门
- Mybatis学习(一)
- mybatis学习(一)
- mybatis入门教程 (一)
- js返回上一页并刷新的多种实现方法
- Linux下fdisk命令操作磁盘详解--添加、删除、转换分区等
- 博客收录
- javaseday19(Map获取字母个数 查表法)
- The type javax.servlet.http.HttpServletRequest cannot be resolved
- Mybatis一
- 大型互联网技术架构1-架构概述
- 最短路径之Dijkstra算法和Floyd-Warshall算法
- 移动开发用逐浪-官方公众号集成[字体大师]小程序
- CentOS下Mysql数据库的安装与配置
- BZOJ 3884: 上帝与集合的正确用法(欧拉函数)——有趣的题目
- maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
- 自定义字体
- XZ_iOS之更新Xcode插件技巧