MyBatis基础
创始人
2024-02-18 09:52:54
0

一什么是MyBatis

什么是myBatis

MyBatis框架也被称之为ORM(Object/Relation Mapping,即对象关系映射)框架。所谓的ORM就是一种为了解决面向对象与关系型数据库中数据类型不匹配的技术,它通过描述Java对象与数据库表之间的映射关系,自动将Java应用程序中的对象持久化到关系型数据库的表中。

框架结构图:

· MyBatis 是一款优秀的持久层框架

· 它支持自定义 SQL、存储过程以及高级映射。

· MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

· MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

· MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code ,并且改名为MyBatis 。

· 2013年11月迁移到Github。-----说明包可以到Github上找

2. 获取MyBaits仓库

方式一:maven仓库

第一步:搜索maven仓库

第二步:在maven仓库中搜索MyBatis

第三步:点击下载MyBatis

方式二:从github官网获取

第一步:百度搜索GitHub

第二步:打开GitHub官网,搜索MyBatis

第三步:下载MyBatis

3 持久化与数据持久层

持久化:就是把数据保存到可掉电式存储设备中供之后使用

三层结构:

三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。

 

一个最常用的扩展就是将三层体系扩展为五层体系,即表示层(Presentation)、控制/中介层(Controller/Mediator)、领域层(Domain)、数据持久层(Data Persistence)和数据源层(Data Source)。

 Mybatis的层结构

4.MyBatis的特点

  •  简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
  • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
  • 提供映射标签,支持对象与数据库的orm字段关系映射
  • 提供对象关系映射标签,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql。

二、搭建环境

1)创建数据的方式

最简单的方式,只创建数据库:create database xsgl;

创建数据库并设定编码格式:create database xsgl default character set utf8;

判断原来不存在,则创建数据库,并指定编码格式:create database if not exists xsgl default character set utf8;

判断原来不存在,则创建数据库,并指定编码格式和校验集:create database if not exists xsgldefault character set utf8 collate utf8_general_ci;

2)建表语据

 CREATE TABLE user(id  int not null PRIMARY key ,name varchar(50) default  null,pwd  varchar(50) default   null,age  int     default   null
)ENGINE=InnoDB DEFAULT CHARSET=utf8

 3)插入数据

insert into user(id,name,pwd,age) values
(1,'李明','123456',34),
(2,'王三','123456',44),
(3,'何物','123456',18)

第二步:创建普通maven项目

1.创建maven项目mybatis01

2.在pom.xml中导入manve依赖:mybatis-spring,spring-jdbc,aspectjweaver,mybatis,mysql-connector-java,spring-webmvc,junit

 junitjunit4.13.2testorg.springframeworkspring-webmvc5.3.10mysqlmysql-connector-java8.0.26org.mybatismybatis3.5.6org.aspectjaspectjweaver1.9.7org.springframeworkspring-jdbc5.3.10org.mybatismybatis-spring2.0.6

第三步:编写mybatis核心配置文件

在项目src/main/resources目录下创建数据库连接的配置文件,命名为:mybatis-config.xml




第四步:创建POJO实体

·在src下main的java目录下建实体类:yj.com.pojo.User

package yj.com.pojo;public class User {private int id;private String name;private String pwd;private int age;public User() {}public User(int id, String name, String pwd, int age) {this.id = id;this.name = name;this.pwd = pwd;this.age = age;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", pwd='" + pwd + '\'' +", age=" + age +'}';}
}

第五步:创建dao层接口

·在src下main的java目录下建UserMapper接口:yj.com.mapper.UserMapper

package yj.com.mapper;import yj.com.pojo.User;
import java.util.List;
public interface UserMapper {public List findAll();
}

第六步:创建接口的实现类配置文件

在src下main的java目录下建UserMapper的XML配置文件:yj.com.mapper.UserMapper.xml

接口实现类由原来的UserDaoImpl转变为一个Mapper配置文件(UserMapper.xml),重写接口中的方法





第七步:测试

在src下的test中建yj.com.test.UserTest

package yj.com.test;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import yj.com.mapper.UserMapper;
import yj.com.pojo.User;import java.io.IOException;
import java.io.InputStream;
import java.util.List;public class UserTest {@Testpublic void testSelect() throws IOException {// 第一步:读取数据库配置信息String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);// 第二步:创建sqlSessionFactory工厂,就是创建sql工厂,装配sql语句SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);// 第三步:创建sql会话,执行sql语句SqlSession sqlSession = sqlSessionFactory.openSession();//第四步:创建dao接口对象,完成指定的功能,就是执行sql语句UserMapper mapper = sqlSession.getMapper(UserMapper.class);List users = mapper.findAll();for (User user : users) {System.out.println(user.toString());}}
}

注意点:

java.lang.exceptionininitializererror_解决出现 java.lang.ExceptionInInitializerError错误问题

在pom.xml中加入以下:

src/main/resources**/*.properties **/*.xmltruesrc/main/java**/*.properties **/*.xmltrue

其他原因导致此问题解决参考:

  1. 检查xml文件所在package名称是否和Mapper interface所在的包名     mapper的namespace写的不对!!!注意修改。
  2. UserMapper的方法在UserDao.xml中没有,然后执行UserMapper的方法会报此错。
  3. UserMapper的方法返回值是List,而select元素没有正确配置ResultMap,或者只配置ResultMap!
  4. 如果你确定没有以上问题,请任意修改对应的xml文件,比如删除一个空行。
  5. 查看mapper的xml配置路径是否正确。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...