一、MyBatis简介
1.1 MyBatis介绍
MyBatis是一个
半自动
的
ORM
框架
ORM(Object Relational Mapping)对象关系映射,将Java中的一个对象与数据表中一行记录一一对应。
ORM框架提供了实体类与数据表的映射关系,通过映射文件的配置,实现对象的持久化。
- MyBatis的前身是iBatis,iBatis是Apache软件基金会提供的一个开源项目
- 2010年iBatis迁移到Google code,正式更名为MyBatis
- 2013年迁移到Github托管
- MyBatis特点: - 支持自定义SQL、存储过程- 对原有的JDBC进行了封装,几乎消除了所有JDBC代码,让开发者只需关注SQL本身- 支持XML和注解配置方式自定完成ORM操作,实现结果映射
二、MyBatis框架部署
框架部署,就是将框架引入到我们的项目中
2.1 创建Maven项目
- Java工程
- Web工程
2.2 在项目中添加MyBatis依赖
- 在pom.xml中添加依赖- mybatis- mysql driver
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version></dependency>
2.3 创建MyBatis配置文件
- 创建自定义模板:选择resources----右键New----Edit File Templates 如果版本问题去file----setting中找
- 在resources中创建名为
mybatis-config.xml
的文件 - 在
mybatis-config.xml
文件配置数据库连接信息
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 在environments配置数据库连接信息 --><!-- 在environments标签中可以定义多个environment标签,每个environment标签可以定义一套连接配置 --><!-- default属性,用来指定使用哪个environment标签 --><environmentsdefault="mysql"><environmentid="mysql"><!--transactionManager标签用于配置数据库管理方式--><transactionManagertype="JDBC"></transactionManager><!--dataSource标签就是用来配置数据库连接信息 --><dataSourcetype="POOLED"><propertyname="driver"value="com.mysql.jdbc.Driver"/><propertyname="url"value="jdbc:mysql://localhost:3306/test11?characterEncoding=utf-8"/><propertyname="username"value="root"/><propertyname="password"value="root"/></dataSource></environment></environments></configuration>
三、MyBatis框架使用
案例:学生信息的数据库操作
3.1 创建数据表
tb_students
DROPTABLEIFEXISTS`tb_students`;CREATETABLE`tb_students`(`sid`int(11)NOTNULLAUTO_INCREMENT,`stu_num`char(5)NOTNULL,`stu_name`varchar(20)NOTNULL,`stu_gender`char(2)NOTNULL,`stu_age`int(11)NOTNULL,PRIMARYKEY(`sid`))ENGINE=InnoDBDEFAULTCHARSET=utf8;
3.2 创建实体类
Student.java
packagecom.xinhua.pojo;publicclassStudent{privateint sid;privateString stuNum;privateString stuName;privateString stuGender;privateint stuAge;publicintgetSid(){return sid;}publicvoidsetSid(int sid){this.sid = sid;}publicStringgetStuNum(){return stuNum;}publicvoidsetStuNum(String stuNum){this.stuNum = stuNum;}publicStringgetStuName(){return stuName;}publicvoidsetStuName(String stuName){this.stuName = stuName;}publicStringgetStuGender(){return stuGender;}publicvoidsetStuGender(String stuGender){this.stuGender = stuGender;}publicintgetStuAge(){return stuAge;}publicvoidsetStuAge(int stuAge){this.stuAge = stuAge;}publicStudent(int sid,String stuNum,String stuName,String stuGender,int stuAge){this.sid = sid;this.stuNum = stuNum;this.stuName = stuName;this.stuGender = stuGender;this.stuAge = stuAge;}@OverridepublicStringtoString(){return"Student{"+"sid="+ sid +", stuNum='"+ stuNum +'\''+", stuName='"+ stuName +'\''+", stuGender='"+ stuGender +'\''+", stuAge="+ stuAge +'}';}publicStudent(){}}
3.3 创建DAO接口,定义操作方法
StudentDAO.java
packagecom.xinhua.dao;importcom.xinhua.pojo.Student;publicinterfaceStudentDao{publicintinsertStudent(Student student);}
3.4 创建DAO接口的映射文件
- 在
resources
目录下,新建名为mappers
文件夹 - 在
mappers
中新建名为StudentMapper.xml
的映射文件(根据模板创建) - 在映射文件中对DAO中定义的方法进行实现:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--mapper文件相当于DAO接口的‘实现类’,namespace属性要指定`实现`DAO接口的全限定名--><mappernamespace="com.xinhua.dao.StudentDAO"></mapper><insertid="insertStudent">
insert into tb_students(stu_num,stu_name,stu_gender,stu_age)
values(#{stuNum},#{stuName},#{stuGender},#{stuAge})
</insert><deleteid="deleteStudent">
delete from tb_students where stu_num=#{stuNum}
</delete></mapper>
注意:mapper文件中的sql的id为接口中的对应的方法名,sql语句中的#为了防止sql注入的问题,大括号里面的为实体类中的属性
3.5 将映射文件添加到主配置文件
mybatis-config.xml
<mappers><mapperresource="mapper/StudentMapper.xml"></mapper></mappers>
3.5 测试项目的主题结构
版权归原作者 程序猿混饭吃 所有, 如有侵权,请联系我们删除。