2021-10-10

0、什么是MyBatis?

MyBatis它是一款半自动的ORM(Object Relation Mapping,对象关系映射)持久层框架,具有较高的SQL灵活性,动态SQL。(框架就是一个模板,一个软件)

1、MyBatis入门

使用maven构建的实现步骤

  1. MySQL中创建一个student表

create table user.student(
id int(10) not null auto_increment comment ‘学号’,
name VARCHAR(5) not null COMMENT ‘姓名’,
age VARCHAR(3) not null COMMENT ‘年龄’,
Primary key(id)
)engine=innodb default charset=utf8

  1. 把MyBatis和Mysql驱动的坐标放入到maven项目下的POM.xml中
    在这里插入图片描述
    在这里插入图片描述

  2. 创建JAVABean类,名字建议与表名一致(Student),类的属性名与表的列名保持一致
    在这里插入图片描述

  3. 创建dao层,dao下建一个StudentDao接口和StudentDao.xml (Sql映射文件) 在这里插入图片描述

  4. StudentDao.xml (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.lcc.dao.StudentDao">
   <!--
    sql的映射文件 ,一个dao一个sql映射文件
    <select>是查询语句。
      id:是要执行sql的唯一标识,推荐使用dao接口中的方法。
      resultType:告诉MyBatis,执行sql语句,把数据赋值给哪个类型的Java对象
      namespace:命名空间,唯一值,使用Dao接口的全限定名
    -->
   <!--select语句-->
   <select id="queryStudents" resultType="com.lcc.pojo.Student">
        select id,name,age from user.student  order by id
   </select>
   <!--insert语句-->
   <insert id="insertStudent">
   insert into user.student values(#{id},#{name},#{age})
   </insert>
</mapper>
  1. 创建一个MyBatis主配置文件 MyBatis.xml ,放到resource目录下
    在这里插入图片描述

  2. MyBatis.xml 主配置文件

<?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>
   <!--控制MyBatis全局行为-->
   <settings>
       <!--设置MyBatis输出日志-->
       <setting name="logImpl" value="STDOUT_LOGGING"/>
   </settings>
   <!--环境配置:数据库的连接信息-->
   <environments default="development">
       <!--environment 一个数据库的配置环境,
       id 唯一标识,自定义,表示环境的名称-->
       <environment id="development">
           <!--
               transactionManager :mybatis的事务类型
               type:jdbc(使用jdbc中的connection对象的commit.rollback做事务处理)
           -->
           <transactionManager type="JDBC"/>
           <!--dataSource 数据源,连接数据库的
               type 表示数据源的类型 ,POOLED表示使用数据库连接池
           -->
           <dataSource type="POOLED">
               <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
               <property name="url"
                         value="jdbc:mysql://localhost:3306/user?useUnicode=true&amp;useSSL=false&amp;characterEncoding=utf8&amp;serverTimezone=UTC"/>
               <property name="username" value="root"/>
               <property name="password" value="123456"/>
           </dataSource>
       </environment>
   </environments>
   <!--指定其他mapper文件的位置,找到其他mapper文件中的sql语句-->
   <mappers>
       <!--resource属性是指定mapper文件的路径
         从target/classes(类路径)开始
         D:\javaCode\MyBatisDemo\MyBatis0004\target\classes\(类路径)com\lcc\dao\StudentDao.xml
       -->
       <mapper resource="com\lcc\dao\StudentDao.xml"/>
   </mappers>
</configuration>
  1. **创建测试类StudentTest
package com.lcc;

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.IOException;
import java.io.InputStream;

public class StudentTest{
   @Test
   public void insert() throws IOException {
       //访问MyBatis获取Student数据
       //1、定义MyBatis主配置文件的名称,从类路径的根开始()
       String config = "MyBatis.xml";
       //2、读取Config表示的文件
       InputStream resource = Resources.getResourceAsStream(config);
       //3、创建SqlSessionFactoryBuilder对象
       SqlSessionFactoryBuilder factoryBuilder = new SqlSessionFactoryBuilder();
       //4、获取SqlSessionFactory对象
       SqlSessionFactory sessionFactory = factoryBuilder.build(resource);
       //5、【重要】获取SqlSession
       SqlSession sqlSession = sessionFactory.openSession();
       //6、【重要】指定要执行sql语句的标识,sql映射文件中的namespace+"."+标签的id值(执行的sql标签的id值)
       String sqlId = "com.lcc.dao.StudentDao"+"."+"queryStudents";
       //7、执行sql,输出sql结果
       sqlSession.selectList(sqlId).forEach(stu -> System.out.println(stu));
       //8、关闭sqlSession
       sqlSession.close();
   }
}

3、主要类

  • Resources 作用:主要就是读取主配置文件MyBatis.xml
	 //1、定义MyBatis主配置文件的名称,从类路径的根开始()
     String config = "MyBatis.xml";
      //2、读取Config表示的文件
     InputStream resource = Resources.getResourceAsStream(config);
  • SqlSessionFactoryBuilder 作用:使用它的 build()方法获得SqlSessionFactory对象
  	//3、创建SqlSessionFactoryBuilder对象
    SqlSessionFactoryBuilder factoryBuilder = new SqlSessionFactoryBuilder();
    //4、获取SqlSessionFactory对象
     SqlSessionFactory sessionFactory = factoryBuilder.build(resource);
  • SqlSessionFactory 作用:通过他的openSession()方法获取非自动提交的SqlSession对象;当openSession(true) 参数为true时,获取自动提交的SqlSession对象;当openSession(false) 参数为true时,获取非自动提交的SqlSession对象
		 //4、获取SqlSessionFactory对象
        SqlSessionFactory sessionFactory = factoryBuilder.build(resource);
        //5、(重要)获取SqlSession
        SqlSession sqlSession = sessionFactory.openSession();
  • SqlSession 接口中定义了操作类的方法,但是SqlSession不是线程安全的,当执行sql之后需要手动关闭
	 //5、(重要)获取SqlSession对象
        SqlSession sqlSession = sessionFactory.openSession();
        //6、『重要』指定要执行sql语句的标识,sql映射文件中的namespace+"."+标签的id值(执行的sql标签的id值)
        String sqlId = "com.lcc.dao.StudentDao"+"."+"queryStudents";
        //7、执行sql,输出sql结果
        sqlSession.selectList(sqlId).forEach(stu -> System.out.println(stu));
        //8、关闭sqlSession
        sqlSession.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

创世纪-君临

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值