Mybatis教程01
Mybatis框架
第一天:
- mybatis入门
- 概述
- 环境搭建
- 入门案例
第二天:
- mybatis基本使用
- 单标crud操作
- 参数和返回值
- mybatis的dao编写
- mybatis配置细节
第三天:
- mybatis的深入和多表
- mybatis的连接池
- mybatis的事务控制及设计的方法
- mybatis 的多表查询
第四天
- mybatis缓存和注解开发
- mybatis的加载时机(查询时机)
- mybatis的一级缓存和二级缓存
- mybatis的注解开发
1.什么是框架?
2.三层架构
- 表现层
- 业务层
- 持久层 数据访问层
3.持久层解决方案
JDBC技术
spring的jdbcTemplate(spring对jdbc的简单封装)
Apache的DBUtils(和jdbcTemplate相似)
这些都不是框架,JDBC是规范,以上这些只是工具类
JDBC程序的回顾
点击查看代码
//传统的jdbc
@org.junit.Test
public void test02(){
try {
//1注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2建立连接
String url = "jdbc:mysql://rm-bp18jitlw9a952i5x3o.mysql.rds.aliyuncs.com:3306/mybatis02?userSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8";
String userName = "root"; //登录数据库的账号
String password = "123456"; //登录数据库的密码
Connection connection = DriverManager.getConnection(url, userName, password);
//3获取执行sql语句的对象
Statement statement = connection.createStatement();
//4处理数据集
ResultSet resultSet = statement.executeQuery("select * from user");
while (resultSet.next()){
int id = resultSet.getInt("id");
String username = resultSet.getString("username");
Date birthady = resultSet.getDate("birthday");
String sex = resultSet.getString("sex");
String address = resultSet.getString("address");
System.out.println(id + " " + username + " " + birthady + " " + sex + " " + address);
}
//6关闭连接
statement.close();
resultSet.close();
connection.close();
}catch (Exception e){
e.printStackTrace();
}
}
va
//传统的jdbc
@org.junit.Test
public void test02(){
try {
//1注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2建立连接
String url = "jdbc:mysql://rm-bp18jitlw9a952i5x3o.mysql.rds.aliyuncs.com:3306/mybatis02?userSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8";
String userName = "root"; //登录数据库的账号
String password = "123456"; //登录数据库的密码
Connection connection = DriverManager.getConnection(url, userName, password);
//3获取执行sql语句的对象
Statement statement = connection.createStatement();
//4处理数据集
ResultSet resultSet = statement.executeQuery("select * from user");
while (resultSet.next()){
int id = resultSet.getInt("id");
String username = resultSet.getString("username");
Date birthady = resultSet.getDate("birthday");
String sex = resultSet.getString("sex");
String address = resultSet.getString("address");
System.out.println(id + " " + username + " " + birthady + " " + sex + " " + address);
}
//6关闭连接
statement.close();
resultSet.close();
connection.close();
}catch (Exception e){
e.printStackTrace();
}
}
Mybatis框架概述
开发者只需关注sql语句本身,不需要花费精力去处理加载驱动,创建连接等操作
mybatis是一个持久层框架,用java编写的
它封装了jdbc操作的很多细节,开发者只需关注sql本身
它使用了ORM思想实现了对结果集的封装
ORM: Object Relational Mapping 对象关系映射
简单来说:就是把数据库表和实体类及实体类的属性对应其阿里
让我们可以操作实体类就实现操作数据库表
今天我们需要做到:实体类的属性和数据库表的字段名称保持一致
Mybatis 入门案例
1.创建一个Maven工程
2.创建数据库表
点击查看代码
create table `user`(
`id` int not null AUTO_INCREMENT ,
`username` VARCHAR(16) 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 (1,'老王','2021-01-01 12:00:00','1','北京中关村');
INSERT INTO `user`(`id`,`username`,`birthday`,`sex`,`address`) VALUES (2,'王小二','2021-01-02 12:00:00','0','南京');
INSERT INTO `user`(`id`,`username`,`birthday`,`sex`,`address`) VALUES (3,'马云','2021-01-03 13:00:00','1','杭州');
3.pom配置文件
点击查看代码
<!-- 打包方式-->
<!-- 打包方式-->
<packaging>jar</packaging>
<dependencies>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<!--mybatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<!--junit依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
</dependencies>
4.创建一个实体类
点击查看代码
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User{
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
}
5. 创建一个接口
点击查看代码
public interface UserDao {
List<User> findAllUser();
}
6. 在resources文件夹下面创建SqlMapConfg.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">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis_test?userSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value="kclkd2013."/>
</dataSource>
</environment>
</environments>
<!--映射配置文件-->
<mappers>
<mapper resource="com/kcl/dao/UserMapper.xml"/>
</mappers>
</configuration>
7. 继续在resource文件夹创建映射配置文件r esource="com/kcl/dao/UserMapper.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绑定interface接口-->
<mapper namespace="com.kcl.dao.UserDao">
<!--接口实现-->
<select id="findAllUser" resultType="com.kcl.pojo.User">
select * from user
</select>
</mapper>
8. junit测试
点击查看代码
public class Test {
@org.junit.Test
public void test01(){
try {
//读取主配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
//输入流读取生成SQLSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获取sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//读入用户接口文件UserDao.class
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> users = mapper.findAllUser();
System.out.println(users);
//释放资源
sqlSession.close();
resourceAsStream.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
9.log4j配置文件
点击查看代码
log4j.rootCategory=debug, CONSOLE, LOGFILE
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
注意
mybatis的映射配置文件位置必须和dao接口包结构相同
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律