1. mybatis框架
一个框架,,早期叫做ibatis,代码在github.
mybatis是MyBatis sQL Mapper Framework for Java (sql映射框架)
-
sql mapper :sq1映射,可以把数据库表中的一行数据映射为一个java对象。
-
一行数据可以看做是一个java对象。操作这个对象,就相当于操作表中的数据,Data Access objects (DAOs):数据访问,对数据库执行增删改查.
1.1 mybatis提供了哪些功能
- 提供了创建connection ,statement,Resultset的能力,不用开发人员创建这些对象了
- 提供了执行sql语句的能力,不用你执行sql
- 提供了循环sql,把sql的结果转为java对象,list集合的能力
1. while (rs.next){ student stu = new student( ); stu.setId (rs.getInt("id")); stu.setName(rs.getstring("name")); stu.setAge(rs.getInt("age")); //从数据库取出数据转为student对象,封装到List集合 stuList.add(stu) ;
-
提供了关闭资源的能力,不用你关闭connection,statement,Resultset
开发人员做的是:提供sql语句
最后是:开发人员提供 sql语句–mybatis处理 sql—开发人员得到 List集合或 java对象(表中的数据 )
总结:
mybatis是一个sql映射框架,提供的数据库的操作能力。增强的JDBC,
使用mybatis让开发人员集中精神写sql就可以了,不必关心Connection ,statement ,ResultSet的创建,销毁,sq1的执行。
1.2 第一个入门的mybatis例子
实现步骤:
- 新建的student表
- 加入maven的mybatis坐标, mysql驱动的坐标
- 创建实体类,student–保存表中的一行数据的
- 创建持久层的dao接口,定义操作数据库的方法
- 创建一个mybatis使用的配置文件叫做sql映射文件:写sql语句的。一般一个表一个sql映射文件。这个文件是xml文件。
- 创建mybatis的主配置文件:一个项目就一个主配置文件。主配置文件提供了数据库的连接信息和sql映射文件的位置信息
- 创建使用mybatis类:通过mybatis访问数据库
创建类
package com.cxx.user;
import java.util.List;
public class Students {
private Integer id;
private String name;
private String email;
private Integer age;
public Students() {
}
public Students(Integer id, String name, String email, Integer age) {
this.id = id;
this.name = name;
this.email = email;
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 String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Students{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
", age=" + age +
'}';
}
}
package com.cxx.dao;
import com.cxx.user.Students;
import java.util.List;
public interface StudentsDao {
List<Students> getStudents();
}
<?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.cxx.dao.StudentsDao">
<select id="getStudents" resultType="com.cxx.user.Students">
select * from student
</select>
</mapper>
<?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="devevlopment">
<environment id="devevlopment">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///ssm?serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/cxx/dao/StudentsDao.xml"></mapper>
</mappers>
</configuration>
package com.cxx.dao;
import com.cxx.user.Students;
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.Test;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class TestStudents {
@Test
public void test1() throws IOException {
String config="mybatisConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(config);
SqlSessionFactoryBuilder sessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = sessionFactoryBuilder.build(inputStream);
SqlSession sqlSession = factory.openSession();
String SqlId = "com.cxx.dao.StudentsDao"+"."+"getStudents";
List<Students> studentsList = sqlSession.selectList(SqlId);
// studentsList.forEach( stu -> System.out.println(stu));
for (Students students : studentsList) {
System.out.println(students);
}
sqlSession.close();
}
}
注
package com.cxx.utils;
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.IOException;
import java.io.InputStream;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "StudentsDao.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取SqlSession连接
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
}