MyBatis环境搭建

一、框架概述

  • 什么是框架
    它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题
  • 使用框架的好处
    框架封装了很多的细节,使开发者可以使用极简的方式实现功能,提高开发效率

二、三层架构和SSM框架的对应关系

  • 三层架构
    表现层:用来展示数据
    业务层:用来处理业务需求
    持久层:用来与数据交互
    三层架构和SSM框架的对应关系
    其中MyBatis用于解决持久层的问题,SpringMVC用于解决表现层的问题;而Spring不属于任何一个层

三、JDBC操作数据库的问题分析

  • 现有的持久层解决技术
JDBC技术:
 	Connection
 	PreparedStatement
 	ResultSet
Spring的JdbcTemplate:
 	Spring中对JDBC的简单封装
Apache的DBUtils:
 	它跟Spring的JdbcTemplate很像,也是对JDBC的简单封装

以上这些都不是框架
JDBC是规范
Spring的JdbcTemplate和Apache的DBUtils都只是工具类

JDBC的缺点:

  1. 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题
  2. sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大, sql 变动需要改变 java代码
  3. 使用 preparedStatement 向占有位符号传参数存在硬编码,因为 sql 语句的 where 条件不一定,可能多也可能少,修改 sql 还要修改代码,系统不易维护
  4. 对结果集解析存在硬编码(查询列名), sql 变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成 pojo 对象解析比较方便

四、MyBatis概述

MyBatis是一个持久层框架,使用java编写的
它封装了JDBC操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动、创建连接等繁杂过程
它使用了ORM思想实现了结果集的封装

  • ORM思想的概述

ORM的全称:Object Relational Mapping 对象关系映射
简单来说:就是把数据库表和实体类的属性对应起来,让我们通过操作实体类来操作数据库表

我们后期可以实现把以下数据库表实体类对应起来:

user表java实体类字段
userUser
iduserId
user_nameuserName

五、前期准备工作

我们先创建一个空的Maven项目
创建Maven工程
在这里插入图片描述
导入数据库表

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(32) NOT NULL COMMENT '用户名称',
  `birthday` datetime default NULL COMMENT '生日',
  `sex` char(1) default NULL COMMENT '性别',
  `address` varchar(256) default NULL COMMENT '地址',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



insert  into `user`(`id`,`username`,`birthday`,`sex`,`address`) values (41,'老王','2018-02-27 17:47:08','男','北京'),(42,'小二王','2018-03-02 15:09:37','女','北京金燕龙'),(43,'小二王','2018-03-04 11:34:34','女','北京金燕龙'),(45,'传智播客','2018-03-04 12:04:06','男','北京金燕龙'),(46,'老王','2018-03-07 17:37:26','男','北京'),(48,'小马宝莉','2018-03-08 11:44:00','女','北京修正');





DROP TABLE IF EXISTS `account`;

CREATE TABLE `account` (
  `ID` int(11) NOT NULL COMMENT '编号',
  `UID` int(11) default NULL COMMENT '用户编号',
  `MONEY` double default NULL COMMENT '金额',
  PRIMARY KEY  (`ID`),
  KEY `FK_Reference_8` (`UID`),
  CONSTRAINT `FK_Reference_8` FOREIGN KEY (`UID`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



insert  into `account`(`ID`,`UID`,`MONEY`) values (1,41,1000),(2,45,1000),(3,41,2000);



DROP TABLE IF EXISTS `role`;

CREATE TABLE `role` (
  `ID` int(11) NOT NULL COMMENT '编号',
  `ROLE_NAME` varchar(30) default NULL COMMENT '角色名称',
  `ROLE_DESC` varchar(60) default NULL COMMENT '角色描述',
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



insert  into `role`(`ID`,`ROLE_NAME`,`ROLE_DESC`) values (1,'院长','管理整个学院'),(2,'总裁','管理整个公司'),(3,'校长','管理整个学校');





DROP TABLE IF EXISTS `user_role`;

CREATE TABLE `user_role` (
  `UID` int(11) NOT NULL COMMENT '用户编号',
  `RID` int(11) NOT NULL COMMENT '角色编号',
  PRIMARY KEY  (`UID`,`RID`),
  KEY `FK_Reference_10` (`RID`),
  CONSTRAINT `FK_Reference_10` FOREIGN KEY (`RID`) REFERENCES `role` (`ID`),
  CONSTRAINT `FK_Reference_9` FOREIGN KEY (`UID`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert  into `user_role`(`UID`,`RID`) values (41,1),(45,1),(41,2);

模型如下:

表模型
我们现在主要是作内部调用和测试,所以packaging写jar就可以了
如果后期做项目时需要部署到服务器,可以写war

在这里插入图片描述

然后写mybatis的坐标,可以到中央仓库或者mybatis的官网复制

在这里插入图片描述

因为我们要操作数据库,所以也要导入数据库驱动的坐标

在这里插入图片描述
我们还需要学习打印日志,所以要导入日志包的坐标
在这里插入图片描述
把单元测试也导进去

在这里插入图片描述

六、MyBatis环境搭建

按照数据库的字段,名字一一对应,新建一个实体类

在这里插入图片描述

然后创建相应的Dao类接口

在这里插入图片描述

接下来新建一个SqlMapConfig.xml配置文件

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--mybatis的主配置文件-->
<configuration>
    <!--    配置环境-->
    <environments default="mysql">
        <!--        配置mysql的环境-->
        <environment id="mysql">
            <!--            配置事务的类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--            配置数据源(连接池)-->
            <dataSource type="POOLED">
                <!--                配置连接数据库的4个基本信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=true&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>

    <!--    指定映射配置文件的位置,映射配置文件指定的是每个dao独立的配置文件-->
    <mappers>
        <mapper resource="com/zzq/dao/IUserDao.xml"/>
    </mappers>
</configuration>

注意
Config的约束为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration  
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-config.dtd">

接下来新建IUserDao.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zzq.dao.IUserDao">

    <!--    配置查询所有-->
    <select id="findAll" resultType="com.zzq.domain.User">
        select * from user
    </select>
</mapper>

注意
Mapper的约束为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper  
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
总结
  1. 创建maven工程并导入坐标
  2. 创建实体类和dao的接口
  3. 创建mybatis的主配置文件(SqlMapConfig.xml
  4. 创建映射配置文件(IUserDao.xml
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值