早期MyBatis开发与接口式Mybatis开发的简介
早期MyBatis开发与接口式Mybatis开发的简介
一、早期版本的myBatis使用
导jar包
1、配置mybatis.xml的配置文件
1)、需要加载数据库配置文档
<properties resource="db.properties" />
2)、配置数据源,数据库连接池、处理事务方式
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 链接数据库 的数据池 -->
<dataSource type="POOLED">
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="url" value="${jdbc.url}" />
<property name="driver" value="${jdbc.driver}" />
</dataSource>
</environment>
</environments>
3)、配置映射文件 即xml中配置的sql语句文件 文件位置需要使用/ 不能使用 .
<mapper url="file:///var/mappers/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
<mappers>
<mapper resource="com/da/wei/mapper.xml"/>
</mappers>
2、配置映射mapper.xml
<mapper namespace="com.cn.mybatis.mapper.EmployeeMapper">
<!-- 命名空间使用将要映射执行方法的接口文件 在此处,原始的方法中,命名空间的作用并不明显-->
<!-- 查询所以字段信息 -->
<select id="selectAllEmployee" resultType="com.cn.mybatis.entity.Employee">
SELECT emp_id AS empId,emp_name AS empName,emp_gender AS empGender,emp_email AS empEmail FROM employee
</select>
<!-- 通过id号查询员工信息 -->
<select id="selectEmployeeById" resultType="com.cn.mybatis.entity.Employee" parameterType="java.lang.Integer">
SELECT emp_id AS empId,emp_name AS empName,emp_gender AS empGender,emp_email AS empEmail
FROM employee WHERE emp_id = #{empId}
</select>
</mapper>
3、执行sql操作
执行步骤:
1、配置资源文件
2、设置输入流
3、通过输入流创建会话工厂
new SqlSessionFactoryBuilder().build(iS);
4、通过会话工厂创建会话
sqlSessionFactory.openSession();
5、通过会话执行sql
sqlSession.selectOne("com.cn.mybatis.mapper.EmployeeMapper.selectEmployeeById",1);
其中第一个参数是映射过去的参数,即需要执行的方法体的全限定名
第二个是参数,需要与设置的值类型(方法体的参数类型统一)
这里可以直接强转到想获得的类型,默认为Object
sqlSession.selectList("com.cn.mybatis.mapper.EmployeeMapper.selectAllEmployee",Employee.class);
这里查询返回list 可以通过使用类类型设置返回值的类型,可是不能使用参数
6、关闭会话
sqlSession.close();
private static SqlSessionFactory getSqlSessionFactory(){
//1、配置资源文件
String source = "mybatis.xml";
//2、设置输入流
InputStream iS = null;
//3、创建会话工厂
SqlSessionFactory sqlSessionFactory = null;
try {
//4、将配置文件以流的方式读入
iS = Resources.getResourceAsStream(source);
//5、根据配置文件创建会话工场
sqlSessionFactory = new SqlSessionFactoryBuilder().build(iS);
return sqlSessionFactory;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static void test01(){
SqlSessionFactory sqlSessionFactory = null;
SqlSession sqlSession = null;
//获取会话工厂
sqlSessionFactory = getSqlSessionFactory();
if(sqlSessionFactory!=null){
//6、由会话工程创建会话
sqlSession = sqlSessionFactory.openSession();
//7、由会话执行sql
Employee employee = sqlSession.selectOne("com.cn.mybatis.mapper.EmployeeMapper.selectEmployeeById",1);
System.out.println(employee);
System.out.println("==============标准割==============");
List<Employee> listEmployee = sqlSession.selectList("com.cn.mybatis.mapper.EmployeeMapper.selectAllEmployee",Employee.class);
// System.out.println(listEmployee);
for(Employee emp : listEmployee){
System.out.println(employee);
} //sqlSession.selectList("com.cn.mybatis.mapper.EmployeeMapper.selectAllEmployee", rowBounds)
sqlSession.close();
}
}
早期版本的myBatis其执行的过程为,
1、在使用时,通过引用资源mybatis.xml,创建会话工厂
2、业务执行时,加载mybatis的配置文件
在mybatis中加载数据库的配置文件db.properties文件,进行数据库数据源配置,同时进行数据连接池,数据库事务管理的配置。
3、在mybatis中加载sql映射文件mapper.xml
4、会话工厂创建会话,通过创建出来的会话进行功能调用
调用时,其中的statement参数需要执行,执行方法的全限定名。
5、使用过后进行会话的关闭。
二、接口式版本开发
接口版本配置基本一致
1、mybatis.xml配置
其中映射使用的mapper.xml需要指定到对应的包下
2、mapper.xml配置
按照开发规范,这里需要将mapper的名字配置与接口方法同名且在同一包下。
且命名空间此时用有效需要设置,其值是对应的mapper.xml的接口文件全限定名。
3、使用
在调用时不再是以前的那种statement的配置方式了
通过创建出来的会话,通过获取映射的方式,获取mapper方法接口的代理对象,使用其代理对象进行方法体的直接调用
//由会话工程创建会话
sqlSession = sqlSessionFactory.openSession();
//通过会话获取方法->代理对象
EmployeeMapper employeeMapper = sqlSession.getMapper(com.cn.mybatis.mapper.EmployeeMapper.class);
List<Employee> listEmployee = employeeMapper.selectAllEmployee();
Employee employee = employeeMapper.selectEmployeeById(4);
以上两种方式的比较:
1、接口方式的sql语句mapper.xml的需要按照规范,与接口方法放在同包下,且保持同名。
早期方法只需要在mybatis下指定对应的地址即可
接口的方式更加规范和易读,可以提高开发效率。
2、接口方法在调用时,接口采用通过会话工厂创建代理对象的方式,使用代理对象调用接口中的方法使之实现。
早期方法使用会话直接使用,使用会话的方法指定对应的statement(方法的全限定名)进行sql操作。
接口方式由于直接调用方法,因此可以对参数进行检验验证。
早期MyBatis开发与接口式Mybatis开发的简介的更多相关文章
- 通过自动回复机器人学Mybatis 笔记:接口式编程
[接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...
- 通过自动回复机器人学Mybatis笔记:接口式编程
[接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...
- MyBatis的接口式编程Demo
很久没细看过MyBatis了,时间一长就容易忘记. 下面是一个接口式编程的例子. 这里的例子一共分为4步: 1 首先要有一个namespace为接口的全类名的映射文件,该例中是 IMyUser.xml ...
- 《PHP开发APP接口》笔记
PHP开发APP接口 [TOC] 课程地址 imooc PHP开发APP接口 学习要点 APP接口简介 封装通信接口方法 核心技术 APP接口实例 服务器端 -> 数据库|缓存 -> 调用 ...
- spring和mybatis的整合开发(基于MapperScannerConfigurer的整合开发(适用于复杂项目,接口较多的情况))
在实际项目中,Dao层会包含很多接口,这样会导致spring配置文件过于臃肿.这时就需要采用扫描包的形式来配置mybaits中的映射器. 采用MapperScannerConfigurer来实现. M ...
- spring和mybatis的整合开发(基于MapperFactoryBean的整合开发(方便简单不复杂))
MapperFactoryBean是mybati-spring团队提供的一个用于根据mapper接口生成mapper对象的类. 在spring配置文件中可以配置以下参数: 1.mapperInterf ...
- mybatis学习(三)——接口式编程
对于上一节中的查询我们还可以通过接口的方式进行编程,开发环境和上一节一样 1.全局配置文件mybatis_config.xml(和上一节一样) <?xml version="1.0&q ...
- MyBatis开发Dao的原始Dao开发和Mapper动态代理开发
目录 咳咳...初学者看文字(Mapper接口开发四个规范)属实有点费劲,博主我就废了点劲做了如下图,方便理解: 原始Dao开发方式 1. 编写映射文件 3.编写Dao实现类 4.编写Dao测试 Ma ...
- SSM框架之Mybatis(3)dao层开发
Mybatis(3)dao层开发 以实现类完成CRUD操作 1.持久层dao层接口的书写 src\main\java\dao\IUserDao.java package dao; import dom ...
随机推荐
- if __name__ == '__main__' 如何正确理解
今天有个初学Python 的朋友问我这个问题,他说在网上好多回答他都不太理解.所以这里我来做说一下,希望能把这个问题说明白. 先举一个例子:假设我们有一个add.py文件,里面的代码是这样: def ...
- json-server mock数据
前言: 项目开发中,影响项目进程的常常是由于在前后端数据交互的开发流程中停滞,前端完成静态页面的开发后,后端迟迟未给到接口.而现在,我们就可以通过根据后端接口字段,建立一个REST风格的API接口,进 ...
- 全面理解SSD和NAND Flash
Flash Memory又叫做闪存,是一种非易失性存储器.非易失性是指断电之后数据不会丢失,这里就涉及到断电保护(后面详细讲解). 总体思路 1.NAND Flash的用途. 2.NAND Flash ...
- spring 的单例模式
singleton---单例模式 单例模式,在spring 中其实是scope(作用范围)参数的缺省设定值每个bean定义只生成一个对象实例,每次getBean请求获得的都是此实例 单例模式分为饿汉模 ...
- business meeting
Metting are all about discussions . discussion expression 开始会议 Let's get started We need to discuss. ...
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- App 组件化/模块化之路——Android 框架组件(Android Architecture Components)使用指南
面对越来越复杂的 App 需求,Google 官方发布了Android 框架组件库(Android Architecture Components ).为开发者更好的开发 App 提供了非常好的样本. ...
- 实现wpf的值转换器
从数据库取出来的数据是1,2,3,4,5,不过要显示在控件上的,是1,2,3,4,5对应的string值,怎么办?wpf提供了很好的实现方法,那就是值转换器,我们需要做的是: 1.定义值转换类,继承I ...
- win10*64+vs2015+opencv3.0工程模板配置
参考网上的资料,自己再次整合一下,为新手提供个方便,也为自己备份. 一.下载安装opencv3.0 1.首先下载opencv3.0的包(windows版本的) 2.安装opencv,路径自己选好,自动 ...
- java实现网页爬虫
接着上面一篇对爬虫需要的java知识,这一篇目的就是在于网页爬虫的实现,对数据的获取,以便分析. -----> 目录: 1.爬虫原理 2.本地文件数据提取及分析 3.单网页数据的读取 4.运 ...