1、什么是框架?
一个半成品的软件,我们可以在原有的基础上进行开发。
2、什么是ORM?
ORM即Object Relational Mapping(对象关系映射)。指的是持久化数据和实体对象的映射模式,目的是解决面向对象与关系型数据库之间存在互补匹配的现象。
3、为什么要使用MyBatis?
JDBC的不足:
(1)浪费资源:频繁创建和销毁数据库的连接。
(2)可维护性差:sql语句在代码中采用硬编码。
(3)查询操作复杂:需要手动将查询结果封装到实体对象当中。
(4)增删改查操作繁琐:如若遇到有参数时,需要手动在sql语句中设置实体对象数据的占位符。
JDBC不足的解决办法:
(1)使用数据库连接池。
(2)将sql语句抽取到配置文件中。
(3)使用反射、内省等底层技术,将实体和表进行属性和字段的映射。
(4)总结:使用MyBatis框架解决。
4、快速入门步骤?
(1)准备数据。
CREATE TABLE IF NOT EXISTS `student`(
`id` INT UNSIGNED AUTO_INCREMENT,
`name` VARCHAR(40) NOT NULL,
`age` INT UNSIGNED,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO student (name, age) VALUES ("xiaoming", "18");
INSERT INTO student (name, age) VALUES ("xiaomei", "19");
(2)导入jar包。
(3)编写映射配置文件。
<?xml version="1.0" encoding="UTF-8" ?>
<!--MyBatis的DTD约束-->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
mapper:核心根标签
namespace属性:名称空间
-->
<mapper namespace="StudentMapper">
<!--
select:查询功能的标签
id属性:唯一标识
resultType属性:指定结果映射对象类型
parameterType属性:指定参数映射对象类型
-->
<select id="selectAll" resultType="com.yyj.bean.Student">
SELECT * FROM student
</select>
</mapper>
(4)编写核心配置文件。
<?xml version="1.0" encoding="UTF-8" ?>
<!--MyBatis的DTD约束-->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration 核心根标签-->
<configuration>
<!--environments配置数据库环境,环境可以有多个。default属性指定使用的是哪个-->
<environments default="mysql">
<!--environment配置数据库环境 id属性唯一标识-->
<environment id="mysql">
<!-- transactionManager事务管理。 type属性,采用JDBC默认的事务-->
<transactionManager type="JDBC"></transactionManager>
<!-- dataSource数据源信息 type属性 连接池-->
<dataSource type="POOLED">
<!-- property获取数据库连接的配置信息 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<!-- mappers引入映射配置文件 -->
<mappers>
<!-- mapper 引入指定的映射配置文件 resource属性指定映射配置文件的名称 -->
<mapper resource="StudentMapper.xml"/>
</mappers>
</configuration>
(5)编写代码完成快速入门。
Student实体类:
package com.yyj.bean;
public class Student {
private Integer id;
private String name;
private Integer age;
public Student() {
}
public Student(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
测试类:
package com.yyj.dao;
import com.yyj.bean.Student;
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 MyBatisDemo1 {
public static void main(String[] args) throws Exception {
//1、加载核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("MyBatisConfig.xml");
//2、获取SqlSessionFactoryBuilder对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//3、通过SqlSessionFactoryBuilder对象获取
SqlSession sqlSession = sqlSessionFactory.openSession();
//4、执行映射配置文件中的sql语句并接收返回的执行结果
List<Student> list = sqlSession.selectList("StudentMapper.selectAll");
//5、执行返回结果
for (Student stu : list) {
System.out.println(stu);
}
//5、释放资源
sqlSession.close();
resourceAsStream.close();
}
}
6、代码及结果展示