MyBatis增删改查(步骤详细,由浅入深,适合初学者,只看这一篇就够了)
Posted 野生java研究僧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis增删改查(步骤详细,由浅入深,适合初学者,只看这一篇就够了)相关的知识,希望对你有一定的参考价值。
MyBatis目录
java(后端框架)MyBatis的使用
mybatis的简介这里就不多说了,百度一大堆,我们只需要这是一个JDBC的升级版,让我们更好的操作数据库,减少不必要的代码,让我们专注于实现自己的业务逻辑.
web开发的三层架构 (mvc )
-
三层架构
界面层: 和用户打交道的, 接收用户的请求参数, 显示处理结果的。(jsp ,html ,servlet)
业务逻辑层: 接收了界面层传递的数据,计算逻辑,调用数据库,获取数据
数据访问层: 就是访问数据库, 执行对数据的查询,修改,删除等等的。三层对应的包
界面层: controller包 (servlet)
业务逻辑层: service 包(XXXService类)
数据访问层: dao包(XXXDao类)三层中类的交互
用户使用界面层–> 业务逻辑层—>数据访问层(持久层)–>数据库(mysql)三层对应的处理框架
界面层—servlet—springmvc(框架)
业务逻辑层—service类–spring(框架)
数据访问层—dao类–mybatis(框架)
使用 JDBC 的缺陷
- 代码比较多,开发效率低
- 需要关注 Connection ,Statement, ResultSet 对象创建和销毁
- 对 ResultSet 查询的结果,需要自己封装为 List
- 重复的代码比较多些
- 业务代码和数据库的操作混在一起
MyBatis 解决的主要问题
mybatis完全是一个升级版的JDBC,他是可以完全独立抽取出来的使用的.
MyBatis 可以完成:
- 注册数据库的驱动,
- 创建 JDBC 中必须使用的 Connection , Statement, ResultSet 对象
- 从 xml 中获取 sql,并执行 sql 语句,把 ResultSet 结果转换 java 对象
4.关闭资源
ResultSet.close() , Statement.close() , Conenection.close()
mybatis使用步骤:
1.导入maven环境
2.创建dao接口,里面定了你需要对数据库执行什么操作
3.编写mapper文件,sql映射文件,写上你的sql语句
4.创建mybatis主配置文件,读取配置文件中的内容,连接到数据库
5.使用mybatis对象执行sql语句:sqlSession对象
6.关闭连接:sqlSession.close();
1.mybatis基本使用
新建数据库表
CREATE TABLE
t_user
(
id
int NOT NULL AUTO_INCREMENT,
username
varchar(255) DEFAULT NULL,
password
varchar(255) DEFAULT NULL,
email
varchar(255) DEFAULT NULL,
phone
varchar(255) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
1.使用maven新建一个项目(项目 目录结构)
1.1准备一个java Use 类
public class User
private Integer id;
private String username;
private String password;
private String email;
private String phone;
public Integer getId()
return id;
public void setId(Integer id)
this.id = id;
public String getUsername()
return username;
public void setUsername(String username)
this.username = username;
public String getPassword()
return password;
public void setPassword(String password)
this.password = password;
public String getEmail()
return email;
public void setEmail(String email)
this.email = email;
public String getPhone()
return phone;
public void setPhone(String phone)
this.phone = phone;
public User()
public User(Integer id, String username, String password, String email, String phone)
this.id = id;
this.username = username;
this.password = password;
this.email = email;
this.phone = phone;
@Override
public String toString()
return "User" +
"id=" + id +
", username='" + username + '\\'' +
", password='" + password + '\\'' +
", email='" + email + '\\'' +
", phone='" + phone + '\\'' +
'';
2.配置pom.xml文件导入相应的依赖包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>mybais</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.9</maven.compiler.source>
<maven.compiler.target>1.9</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<!-- 把mybatis配置文件拷贝到target/clasess目录下-->
<resources>
<resource>
<directory>src/main/java</directory><!--所在的目录-->
<includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
3.编写dao接口
public interface UserManagerDao
/**
* 查询所有的数据 用于视图展示
* @return 返回一个List集合
*/
public List<User> queryUser();
/**
* 添加
* @param user 一个user对象
* @return 成功返回true 失败返回false
*/
public Boolean addUser(User user);
/**
* 删除用户
* @param id 需要删除的用户id
* @return 成功返回true 失败返回false
*/
public Boolean delUser(String id);
/**
* 修改用户信息
* @param user 需要一个user对象
* @return 成功返回true 失败返回false
*/
public Boolean updateUser(User user);
/**
* 按照用户名查找用户
* @param name 需要查找的用户名
* @return 返回一个List集合
*/
public List<User> likeUser(String name);
4.编写dao接口的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">
<!--
namespace:必须有值,自定义的唯一字符串
推荐使用:dao 接口的全限定名称
-->
<mapper namespace="bookMall.dao.UserManagerDao">
<select id="queryUser" resultType="bookMall.bean.User" >
<!--查询操作-->
select id,username,password,email,phone from t_user where id>0
</select>
<select id="likeUser" resultType="bookMall.bean.User" >
<!--跟参数的查询操作-->
select id,username,password,email,phone from t_user where username=#username
</select>
<!--添加操作-->
<insert id="addUser" >
insert into t_user values(#id,#username,#username,#email,#phone)
</insert>
</mapper>
5.资源目录下的 mybatis.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">
<configuration>
<!--环境配置: 数据库的连接信息 default:必须和某个environment的id值一样。 告诉mybatis使用哪个数据库的连接信息。也就是访问哪个数据库 -->
<environments default="mydev">
<!-- environment : 一个数据库信息的配置, 环境 id:一个唯一值,自定义,表示环境的名称。 -->
<environment id="mydev">
<!--transactionManager :mybatis的事务类型 type: JDBC(表示使用jdbc中的Connection对象的commit,rollback做事务处理) -->
<transactionManager type="JDBC"/>
<!-- dataSource:表示数据源,连接数据库的 type:表示数据源的类型, POOLED表示使用连接池 -->
<dataSource type="POOLED">
<!-- driver, user, username, password 是固定的,不能自定义。 -->
<!--数据库的驱动类名-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!--连接数据库的url字符串-->
<property name="url" value="jdbc:mysql://localhost/book_ctiy?serverTimezone=GMT%2B8"/>
<!--访问数据库的用户名-->
<property name="username" value="root"/>
<!--密码-->
<property name="password" value="2732195202"/>
</dataSource>
</environment>
</environments>
<!-- sql mapper(sql映射文件)的位置-->
<mappers>
<!--一个mapper标签指定一个文件的位置。 从类路径开始的路径信息。 target/clasess(类路径)-->
<mapper resource="bookMall\\dao\\UserManagerDao.xml"/>
</mappers>
</configuration>
6.测试是否可以用
@Test
void queryUser() throws IOException
//访问mybatis读取student数据
//1.定义mybatis主配置文件的名称, 从类路径的根开始(target/clasess)
String config="mybatis.xml";
//2.读取这个config表示的文件
InputStream in = Resources.getResourceAsStream(config);
//3.创建了SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//4.创建SqlSessionFactory对象
SqlSessionFactory factory = builder.build(in);
//5.获取SqlSession对象,从SqlSessionFactory中获取SqlSession
SqlSession sqlSession = factory.openSession();
//6.【重要】指定要执行的sql语句的标识。 sql映射文件中的namespace + "." + 标签的id值
String sqlId = "bookMall.dao.UserManagerDao" + "." + "queryUser";
// String sqlId = "bookMall.dao.UserManagerDao";
//7. 重要】执行sql语句,通过sqlId找到语句
List<User> studentList = sqlSession.selectList(sqlId);
//8.输出结果
//studentList.forEach( stu -> System.out.println(stu));
for(User user : studentList)
System.out.println("查询的学生="+user);
//9.关闭SqlSession对象
sqlSession.close();
7.测试结果:
注意事项:
1:target目录下一定要有这两个文件,如果没有,手动复制进去也行
2.mysql的依赖配置如果是高版本的:
driver的值是:com.mysql.cj.jdbc.Driver
3.mysql的依赖配置如果是高版本的,url是这样的:
dbc:mysql://localhost/book_ctiy?serverTimezone=GMT%2B8
一定要加上时区,不然会报错
4.在pom.xml配置文件中需要加上,才能更好的将pom.xml和UserManagerDao.xml文件映射出去
2.mybatis工具类的封装和实现增删改查
项目的目录结构: :
需要注意的是target目录下必须有标记红色框的那两个文件,否则执行的时候回报错
1.准备数据库表
CREATE TABLE `t_user` (
`id` int NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`phone` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `t_user`(`id`, `username`, `password`, `email`, `phone`) VALUES (1, 'admin', 'admin', 'admin@qq.com', '1008611');
INSERT INTO `t_user`(`id`, `username`, `password`, `email`, `phone`) VALUES (2, 'root', 'root', 'root@qq.com', '1008622');
INSERT INTO `t_user`(`id`, `username`, `password`, `email`, `phone`) VALUES (19, 'admin2', 'root2', 'root@qq.com2', '1008644');
2.创建实体类
public class User
private Integer id;
private String username;
private String password;
private String email;
private String phone;
public Integer getId()
return id;
public void setId(Integer id)
this.id = id;
public String getUsername()
return username;
public void setUsername(String username)
this.username = username;
public String getPassword()
return password;
public void setPassword(String password)
this.password = password;
public String getEmail()
return email;
public void setEmail(String email)
this.email = email;
public String getPhone()
return phone;
public void setPhone(String phone)
this.phone = phone;
public User()
public User(Integer id, String username, String password, String email, String phone)
this.id = id;
this.username = username;
this.password = password;
this.email = email;
this.phone = phone;
@Override
public String toString()
return "User" +
"id=" + id +
", username='" + username + '\\'' +
", password='" + password + '\\'' +
", email='" + email + '\\'' +
", phone='" + phone + '\\'' +
'';
3.创建maven项目,大多数配置一样,但是某些配置根据自己的来
注意:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.9</maven.compiler.source>
<maven.compiler.target>1.9</maven.compiler.target>
因为我的jdk9,所以我写的就是9,你们根据自己的jdk版本来写.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>mybatisMybatis 介绍 入门 及连接数据库进行增删改查(步骤)