Mybatis学习笔记(一)


一、MyBatis是什么?

  mybatis是一个开源、轻量级的数据持久化框架。在前面的学习过程中,使用的是jdbc来操作数据库,但是使用jdbc的过程中,发现操作繁琐,存在大部分重复代码,而mybatis内部封装了jdbc,简化了加载驱动、创建连接、创建statement等繁杂的步骤,开发时只需关注sql语句本身。

二、框架初体验

  1. 创建一个maven项目(src目录结构如下图),导入项目所需要的jar包
    在这里插入图片描述
<dependencies>
	<!-- mybatis依赖 -->
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>
		<version>3.5.5</version>
	</dependency>

	<!-- mysql驱动 -->
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>8.0.21</version>
	</dependency>
</dependencies>
  1. 在本地数据库中创建Student表,并在entity下创建对应的Student
public class Student {
    //定义属性,属性名和列名一致
    private Integer id;
    private String name;
    private String email;
    private Integer age;
	
	//这里省略getter、setter以及toString方法
}
  1. dao下创建持久层的dao接口—StudentDao,定义操作数据库的方法(本例中可不创建)
public interface StudentDao {
    //查询student表的所有数据
    public List<Student> selectStudents();
}
  1. dao下创建dao接口对应的sql映射文件—StudentDao.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">
<mapper namespace="com.example.dao.StudentDao">
    <select id="selectStudents" resultType="com.example.entity.Student">
        select * from student order by id
    </select>
</mapper>
  1. resources创建mybatis的配置文件—mybatis.xml(名称自定义)及jdbc.properties
jdbc.mysql.driver=com.mysql.cj.jdbc.Driver
jdbc.mysql.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8
jdbc.mysql.user=root
jdbc.mysql.password=root
<?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>
	<!--指定properties文件的位置,从类路径根开始找文件-->
    <properties resource="jdbc.properties"/>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.mysql.driver}"/>
                <property name="url" value="${jdbc.mysql.url}"/>
                <property name="username" value="${jdbc.mysql.user}"/>
                <property name="password" value="${jdbc.mysql.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/dao/StudentDao.xml"/>
    </mappers>
</configuration>

注意

  • 上述配置文件中的url,由于我使用的版本是5.7,所以需要在后面加上时区,否则运行时会报错!
  • 使用数据库属性配置文件jdbc.properties,方便后期进行修改
  • 如果不使用数据库属性配置文件,则直接在value中填写对应的数据库配置信息
  1. 创建类,使用mybatis访问数据库
import com.example.entity.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.IOException;
import java.io.InputStream;
import java.util.List;

public class App {
    public static void main(String[] args) throws IOException {
        //访问mybatis读取student数据
        //1.定义mybatis主配置文件的名称,从类路径的根开始(target/classes)
        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 = "com.example.dao.StudentDao" + "." + "selectStudents";
        //7.执行sql语句,通过sqlId找到语句
        List<Student> list = sqlSession.selectList(sqlId);
        //8.输出结果
        list.forEach(System.out::println);
        //9.关闭SqlSession对象
        sqlSession.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值