1.什么是框架
框架是一个半成品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度。
2.什么是ORM
ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。
3.什么是mybatis框架
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀==ORM框架==。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录. 半自动化框架。必须写sql语句。 mybatis就是封装与数据库交互的半成品。
4.lombok
简化实体类中的set和get方法以及tostring方法和构造方法。
1.1 安装lombok插件。
1.2 引入lombok依赖。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
5.如何使用mybatis
准备条件:
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和mybatis的驱动jia包
<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>
创建相应的实体类
@Data
@NoArgsConstructor //无参构造函数
@AllArgsConstructor //所有参数的构造函数
public class User {
private int id;
private String name;
private int age;
}
配置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">
<!--namespace:命名空间:它的值现在可以随便写。
以后必须和dao接口对应。
-->
<mapper namespace="a">
<!--sql语句-->
<!--1.根据id查询用户信息
select:表示查询标签
id:唯一标签.
resultType: 返回结果的类型。 mybatis框架帮你把结果封装到User类型中。
#{}:---->占位符。并且或解析uid的值。
-->
<select id="getUserById" resultType="com.ykq.entity.User">
select * from users where id=#{uid}
</select>
</mapper>
把映射文件引入到mybatis配置文件中
测试
public class Test {
public static void main(String[] args) throws Exception{
//1.读取mybatis的配置文件。 连接数据库---
Reader reader = Resources.getResourceAsReader("mybatis.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
//2.获取Session对象---->Connection对象
SqlSession session=sqlSessionFactory.openSession();
//3.执行相应的功能
User user = session.selectOne("a.getUserById", 2);
System.out.println(user);
}
}
6.CRUD操作
import com.ztl.entity.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 org.junit.Before;
import org.junit.Test;
import java.io.Reader;
import java.util.List;
public class TestUser {
@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("a.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(10);
user.setId(4);
session.update("a.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(9);
int row = session.insert("a.addUser", user);
System.out.println("影响的行数:"+row); //mybatis默认是开启事务 需要手动提交。 TODO 讲解事务
session.commit();//提交 安全。
}
}