1. Mybatis
是一个支持普通SQL查询,存储过程和高级映射的优秀持久层ORM(Object Relational Mapping 对象关系映射)框架。
-
功能架构
API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层接收到调用请求就会调用数据处理层来完成具体的数据处理。 数据处理层:负责具体的SQL查 找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
-
特点
1.半自动化。 2.表需要手动进行设计。 3.提供sql。 4.依赖与数据库平台。 5.基与原声jdbc封装。 优点:学习使用简单,优化灵活,适合做互联网项目。
-
环境搭建
1.下载资源jar包。 2.项目下新建lib路径,需要的jar包放入lib路径下,选中右键add as lib.. 3.编写代码程序 1.核心配置文件: 1.做mybatis使用的核心基本配置。 2.数据库的连接信息。 3.是否使用连接池技术。 4.SQL映射文件的扫描。 2.SQL映射文件: 定义SQL语句。 3.测试执行使用mybatis框架连接数据库,执行SQL语句,得到结果。
-
mybatis.xml文件配置
-
Mybatis SQL映射文件
1.入参类型parameterType: 1.基本数据类型|包装类:String Date JAVABEAN 数组 List Map 2.JAVABEAN: 当sql需要的参数存在多个,并且为一个对象的不同属性,可以先把对个参数封装成javabean对象,然后作为一个入参传递。 注意:sql中占位符的名字需要匹配入参对象的属性名。 3.数组|list:sql需要的多个参数是同种类型,一个字段的多个值,适合使用数组|list。 注意:sql语句中需要使用foreach标签进行遍历。 4.Map: sql需要的多个参数,不属于一个对象的不不同属性值,可以封装为Map集合中的不同键值对。 注意:sql中占位符的名字需要匹配键值对的key。 2.结果类型resultType:查询到的结果集中的每一个数据的类型。 基本数据类型|包装类:String Date JAVABEAN List Map List<Map> 注意:如果结果类型为List,resultType设置的为集合的泛型类型。
-
测试
1.测试3个查询方法: 1.selectOne("命名空间.id") 查询一个数据,返回对应类型的一个结果,如果没有查询到返回null。 selectOne("命名空间.id",Object) 第二个参数为sql语句的入参。 2.selectList("命名空间.id") 查询多个数据,返回一个List集合,如果没有查询到返回空的List。 selectList("命名空间.id",Object) 第二个参数为sql语句的入参。 3.selectMap("命名空间.id","作为key的字段名") 查询多个数据,返回一个Map集合,如果没有查询到返回空的Map。 selectMap("命名空间.id",Object,"作为key的字段名") 第二个参数为sql语句的入参,第三个参数返回Map集合中每条数据作为key的字段名。 2.测试增、删、改: 1.增删改默认结果类型为影响函数。 2.事务: session = factory.openSession(); //默认手动提交事务 session = factory.openSession(true); //设置自动提交事务
-
测试接口绑定方案
注意事项: 1.接口名与SQL映射文件名字保持一致,同时放在同一个包下。 2.SQL映射文件命名空间要求定义为: 与之绑定的接口的包名.文件名。 3.sql标签的id属性值要求与所对应的抽象方法的方法名保持一致。 4.SQL的参数与返回值要求与对应的抽象方法的参数与返回值保持一致。 参数的使用: 1.如果参数只有一个,站位符的名字可以任意定义。 2.多参数: sql语句中占位符的名字默认为[arg1, arg0, param1, param2]。 3.入参javabean时,占位符的名字匹配对象的属性名。 4.@Param("参数别名") :sql语句中占位符的名字可以对应通过@Param注解定义的别名。
-
Mybatis的内建别名