一、Mybatis简介1、什么是mybatis
Mybatis是由apache提供的一个针对长久层开源框架,对JDBC拜访数据库的过程进行了简化和封装应用mybatis能够只关注SQL语句自身,而不须要关注(JDBC中的)注册驱动、获取连贯、获取传输器、开释资源等过程。mybatis能够将要执行的SQL语句应用xml文件的形式或者注解形式配置起来,在执行时,将Java对象中携带的参数值和SQL骨架进行映射,生成最终要执行的SQL语句,将执行的后果解决后再返回。2、mybatis的一些劣势
1)JDBC连贯拜访数据库有大量反复的代码,而mybatis能够极大的简化JDBC代码 注册驱动、获取连贯、获取传输器、开释资源2)JDBC没有自带连接池,而mybatis自带的有连接池3)JDBC中是将SQL语句、连贯参数写死在程序中,而mybatis是将SQL语句以及连贯参数都写在配置文件中。4)JDBC执行查问后失去的ResultSet咱们须要手动解决,而mybatis执行查问后失去的后果会解决完后,将解决后的后果返回。二、mybatis的疾速入门程序1、筹备数据:
执行 /unit08-mybatis/sql脚本.txt 文件中的所有sql语句,创立yonghedb库,并创立emp表,往emp表中插入若干条记录。2、创立我的项目、导入jar包、提供测试类
2.1.创立的Maven的java我的项目:CGB-Mybatis-012.2.在我的项目的pom文件中导入依赖:junit、mysql驱动、mybatis、log4j等2.3.创立com.tedu.MybatisTest01测试类 ------------------------------- <dependencies> <!-- 引入mybatis依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> <!-- 引入mysql驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency> <!-- 引入单元测试的依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> <!-- 引入日志框架的依赖 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.4</version> </dependency> </dependencies> -------------------------------3、提供配置文件(mybatis-config.xml、EmpMapper.xml)
3.1.提供mybatis-config.xml文件 mybatis-config文件中次要配置了事务管理形式、连贯数据库的参数、导入mapper文件3.2.提供EmpMapper.xml文件 EmpMapper文件次要配置未来要执行的SQL语句(查问、新增、删除、批改) 4、提供Emp实体类
如果要查问所有的员工信息,员工信息查问进去后须要封装到Java对象中因为这里须要提供的Emp(员工)类,这个类用于封装所有的员工信息com.tedu.pojo.Emp有哪些信息(数据)须要封装到Emp类中,就在Emp类中提供什么的属性/变量在Emp中提供4个变量(id、name、job、salary)别离用来封装emp表中的id、name、job、salary四列数据。再提供4个变量(id、name、job、salary)对应的Get和Set办法----------------------------------------------------1) 什么是POJO? plain old/ordinary java object: 简略java对象, 专指用于封装数据的对象 例如: 为了封装员工信息, 咱们能够提供一个Emp类来封装员工信息2) id和salary为什么不必根本数据类型而是应用包装数据类型? 根本数据类型有默认值, 例如 int类型变量默认值是0, 如果应用包装类型,默认值为null 默认值为0,有时影响咱们的判断(例如,一个int类型的变量为0,咱们无奈辨别0是赋的值还是默认值)3) Emp类中的变量名为什么要和emp表中的列名保持一致? 框架在将查问的后果封装到Emp对象中时,就是通过emp表中的列名(id,name,job,salary) 生成对应的set办法( setId, setName, setJob, setSalary ), 将查问的后果封装到Emp对象中 如果没有set办法, 也是通过emp表中的列名(id,name,job,salary)找到Emp类中的 变量(id,name,job,salary), 通过暴力反射将查问的后果封装到Emp对象中。----------------------------------------------------三、MyBatis中的占位符0、启用log4j日志框架: 专门为Java语言提供的一套日志框架,能够通过log4j打印程序中执行的日志信息
...