03 Mybatis:01.Mybatis课程介绍及环境搭建&&02.Mybatis入门案例
mybatis框架
共四天
第一天:mybatis入门
mybatis的概述
mybatis的环境搭建
mybatis入门案例----------------------------------------------------------------------------------------
1、什么是框架?
它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。
使用框架的好处:
框架封装了很多的细节,使开发者可以使用极简的方式实现功能。大大提高开发效率。
2、三层架构
表现层:
是用于展示数据的
业务层:
是处理业务需求
持久层:
是和数据库交互的4、mybatis的概述
mybatis是一个持久层框架,用java编写的。
它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程
它使用了ORM思想实现了结果集的封装。ORM:
Object Relational Mappging 对象关系映射
简单的说:
就是把数据库表和实体类及实体类的属性对应起来
让我们可以操作实体类就实现操作数据库表。user_name userName
今天我们需要做到
实体类中的属性和数据库表的字段名称保持一致。
01、mybatis的入门的环境搭建
环境搭建的注意事项:
第一个:在Mybatis中它把持久层的操作接口的映射文件也叫做:Mapper
所以:IUserDao 和 IUserMapper是一样的
第二个:在idea中创建目录的时候,它和包是不一样的
包在创建时:com.itheima.dao它是三级结构
目录在创建时:com.itheima.dao是一级目录
第三个:mybatis的映射配置文件位置必须和dao接口的包结构相同
第四个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
第五个:映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名当我们遵从了第三,四,五点之后,我们在开发中就无须再写dao的实现类。
第一步:创建maven工程并导入坐标
pom.xml
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
第二步:创建实体类和dao的接口
package com.itheima.domain; import java.io.Serializable;
import java.util.Date; public class User implements Serializable {
//省略了get/set方法和覆盖重写的toString方法
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
IUserDao
package com.itheima.dao; import com.itheima.domain.User; import java.util.List; /**
*
* 用户的持久层接口
*/ public interface IUserDao { /**
*
* 查询所有操作
*/
List<User> findAll();
}
第三步:创建Mybatis的主配置文件
SqlMapConifg.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.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis ?serverTimezone=Asia/Shanghai"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments> <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
<mappers>
<!-- Mapper映射文件的名字和接口文件的名字一致(非强制性) -->
<mapper resource="com/itheima/dao/IUserMapper.xml"/>
</mappers>
</configuration>
第四步:创建映射配置文件
IUserMapper.xml
不要忘记在映射配置中告知mybatis要把查询结果封装到哪个实体类中
配置的方式:指定实体类的全限定类名
<?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.itheima.dao.IUserDao">
<!-- 配置查询所有-->
<select id="findAll" resultType="com.itheima.domain.User">
select * from user ;
</select> </mapper>
02.Mybatis入门案例
明确:
我们在实际开发中,都是越简便越好,所以都是采用不写dao实现类的方式。
不管使用XML还是注解配置。
导入log4j.properties配置文件
编写测试用例
第一步:读取配置文件
第二步:创建SqlSessionFactory工厂
第三步:创建SqlSession
第四步:创建Dao接口的代理对象
第五步:执行dao中的方法
第六步:释放资源
package com.itheima.test;
/*
* mybatis的入门案例
*/ import com.itheima.dao.IUserDao;
import com.itheima.domain.User;
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 java.io.InputStream;
import java.util.List; public class MybatisTest { public static void main(String[] args)throws Exception {
//1.读取配置文件
//getResourceAsStream报异常,需要throws Exception
InputStream input = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory工厂
//SqlSessionFactory是个接口不能直接new对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(input);
//3.使用工厂生产SqlSession对象
SqlSession sqlsession = factory.openSession();
//4.使用SqlSession创建Dao接口的代理对象
IUserDao userDao = sqlsession.getMapper(IUserDao.class);
//5.使用代理对象执行方法
List<User> users = userDao.findAll();
//foreach增强for循环
for (User user: users) {
System.out.println(user);
}
//6.释放资源
sqlsession.close();
input.close(); } }
mybatis入门案例中的设计模式分析
3 mybatis注解开发
IUserDao.java
package com.itheima.dao; import com.itheima.domain.User;
import org.apache.ibatis.annotations.Select; import java.util.List; /**
*
* 用户的持久层接口
*/ public interface IUserDao { /**
*
* 查询所有操作
*/
@Select("select * from user")
List<User> findAll();
}
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.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis ?serverTimezone=Asia/Shanghai"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments> <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件
如果是用注解来配置的话,此处应该使用class属性指定被注解的dao接口的全限定类名
-->
<mappers>
<!-- Mapper映射文件的名字和接口文件的名字一致(非强制性) -->
<mapper class="com.itheima.dao.IUserDao"/>
</mappers>
</configuration>
end
03 Mybatis:01.Mybatis课程介绍及环境搭建&&02.Mybatis入门案例的更多相关文章
- 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_05.mybatis环境搭建-前期准备
视频中右侧没有勾选 直接finish 用下面的sql里面的一些表来实现今天的功能 只需要用到里面的user表. 这是之前已经建好的数据库 把表都删除掉,用sql语句去创建表和表内的记录,最终的结果: ...
- 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_06.mybatis的环境搭建
创建实体类,实现Serializable接口 属性名和数据库的字段名保持一致 Date字段需要导入包 生成gettter和setter,再生成一个ToString的方法 创建持久层Dao 创建接口 里 ...
- 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_04.mybatis概述
- 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_01.mybatis课程介绍
- Django 01 django基本介绍及环境搭建
Django 01 django基本介绍及环境搭建 #http服务器 #用来接收用户请求,并将请求转发给web应用框架进行处理 #Web应用框架 #处理完请求后在发送给http服务器,http服务器在 ...
- 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_07.环境搭建的注意事项
2 resources下面创建目录要一级一级的创建,下面这个创建的就是一级目录而不是三级 在文件夹下看到的目录也是一级的 因此这里创建目录需要一个个的去创建 配置文件和dao类这两个目录要保持一致,这 ...
- 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_03.jdbc操作数据库的问题分析
分析一段代码,传统的jdbc的功能,最终要实现的功能就是sql语句.
- 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_02.三层架构和ssm框架的对应关系
- [小北De编程手记] : Lesson 01 - Selenium For C# 之 环境搭建
在我看来一个自动化测试平台的构建,是一种很好的了解开发语言,单元测试框架,自动化测试驱动,设计模式等等等的途径.因此,在下选择了自动化测试的这个话题来和大家分享一下本人关于软件开发和自动化测试的认识. ...
随机推荐
- 091-PHP数组过滤函数array_filter,过滤非整数
<?php function not_int($x){ //定义过滤非整数的函数 if(is_int($x)) return TRUE; } $arr=array(1,2,'a',3,4,'c' ...
- unicode字符等价探究
Demobaidu.com(\uff41)能跳转到baidu.combаidu.com(\u0430)不能跳转到baidu.com,被认为成一个其他域名 等价原因两个不同编码的Unicode字符之间可 ...
- 使用WebClient下载文件到本地目录
利用WebClient实现下载文件 调用 string url = "https://timgsa.baidu.com/timg?image&quality=80&size= ...
- Spark 广播变量 和 累加器
1. 广播变量 理解图 使用示例 # word.txt hello scala hello python hello java hello go hello julia hello C++ hello ...
- NumPy 矩阵库函数
章节 Numpy 介绍 Numpy 安装 NumPy ndarray NumPy 数据类型 NumPy 数组创建 NumPy 基于已有数据创建数组 NumPy 基于数值区间创建数组 NumPy 数组切 ...
- Nginx php-fpm 分离搭建 (上) 未完
最近又重新看了一遍 'nginx入门到精通' 抽点时间 出来搭几个Demo 会有更深体会: Nginx如何与Php-fpm结合 Nginx不只有处理http请求的功能,还能做反向代理. ...
- inkscape批量将svg转为pdf
for i in *.svg;do inkscape --export-pdf=${i%.*}.pdf $i;done
- c++ opencv 数学函数示例
// ConsoleApplication11.cpp : Defines the entry point for the console application. // #include " ...
- Aduino Nano 技术性能指标
纵览 在Adnuino Nano网站上节选了该控制器的价格等,在中国买非常便宜,我用10元左右的人民币就买到了这个产品,在Arduino网站上的价格是22美金,还不包括税.这种差别是如何造成的?是国外 ...
- 当chart图遇上bootstrap的TAB切换 无宽高问题?
.tab-content > .tab-pane, .pill-content > .pill-pane { display: block; /* undo display:none ...