目录
③ 引入 mybatis的jar包 和 mysql的驱动jar包。
④ 创建相应的实体类和一个interface接口。(命名规范啥的相信大家都知道,在下也不献丑了)
⑤配置mybatis的配置文件---mybatis会读取该文件的内容完成连接我们数据库的功能。
1. Mybatis---ORM框架
1.1 lombok
① 安装lombok插件 (认准小辣椒🌶)
② 引入lombok依赖
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
1.2 什么是框架?
框架是一个半成品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度。
1.3 什么是ORM?
ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。
1.4什么是 mybatis框架?
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀==ORM框架==。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录. 半自动化框架。必须写sql语句。
总结:mybatis就是封装与数据库交互的半成品。
1.5 如何使用mybatis?
① 准备条件:先在Navicat数据库中创建一个我们需要的表
create database mybatis;
use mybatis;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME
VARCHAR(20), age INT);
INSERT INTO users(NAME, age) VALUES('Tom', 12);
INSERT INTO users(NAME, age) VALUES('Jack', 11);
② 创建一个maven的Java工程。
③ 引入 mybatis的jar包 和 mysql的驱动jar包。
如果有报红是说明咱们还没下载这些jar包,千万记得要点击保存下载按钮!(pom.xml的右上角,如下图所示)
jar包内容:
<dependencies>
<!--mysql驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<!--mybatis的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
</dependencies>
④ 创建相应的实体类和一个interface接口。(命名规范啥的相信大家都知道,在下也不献丑了)
⑤配置mybatis的配置文件---mybatis会读取该文件的内容完成连接我们数据库的功能。
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
</configuration>
⑥编写相应的映射文件。(sql语句 实体类与表的映射)
<?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.fan.dao.UserDao">
<select id="SelectById" resultType="com.fan.entity.User">
select * from users where id=#{id}
</select>
</mapper>
⑦ 把映射文件引入到mybatis配置文件中。
⑧ 开始测试(建立一个我们的测试类)
查询我们id为2的用户信息;
运行结果如下:
1.6 CRUD操作
① 引用我们junitjar包:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
开始测试:
其余代码如下:
public class TestUserMapper {
@Test
public void testSelectAll()throws Exception{
Reader reader = Resources.getResourceAsReader("mybatis.xml");
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession session=sessionFactory.openSession();
List<User> list = session.selectList("com.fan.entity.User.selectAll");
System.out.println(list);
}
@Test
public void testDelete(){
}
@Test
public void testUpdate() throws Exception{
Reader reader = Resources.getResourceAsReader("mybatis.xml");
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession session=sessionFactory.openSession();
User user = new User();
user.setName("汪伟宁");
user.setAge(17);
user.setId(4);
session.update("com.fan.entity.User.updateUser",user);
session.commit();
}
@Test
public void testSelectByid(){
}
@Test
public void testInsert() throws Exception{
Reader reader = Resources.getResourceAsReader("mybatis.xml");
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader);
SqlSession session=sessionFactory.openSession();
User user = new User();
user.setName("刘德华");
user.setAge(18);
int row = session.insert("com.fan.entity.User.addUser", user);
System.out.println("影响的行数:"+row); //mybatis默认是开启事务 需要手动提交。 TODO 讲解事务
session.commit();//提交 安全。
}
}