MyBatis学习笔记(二)

第2章 MyBatis框架入门案例

2.1 MyBatis 框架开发的准备

2.1.1 官网下载MyBatis框架

从百度中“mybatis download”可以下载最新的Mybatis开发包。
在这里插入图片描述

进入选择语言的界面,进入中文版本的开发文档。

在这里插入图片描述
可以看到mybatis的中文开发手册了。在这里插入图片描述

在maven工程中可以直接使用坐标来使用jar包,如果是普通工程需要自行下载mybatis的jar包

在这里插入图片描述

2.2 搭建Mybatis的开发环境

2.2.1 创建maven工程

在这里插入图片描述

2.2.2 添加mybatis的坐标和连接数据库的驱动

在pom.xml文件中加入mybatis3.5.1的坐标以及mysql的连接驱动(看自己使用的是什么数据库就加什么数据库的驱动):


注:在使用maven的时候需要改一下Maven的镜像,换成阿里云镜像。地址连接:https://www.jianshu.com/p/dddc8b8c5c74

如果不换镜像的话,项目导不了jar包。无法使用。


<!--    mybatis的依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.1</version>
    </dependency>
<!--    mysql驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.23</version>
    </dependency>
<!--建议加上这个插件-->
 <build>
    <resources>
      <resource>
        <directory>src/main/java</directory> <!--所在目录-->
        <includes>
          <include>**/*.propertis</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>
  </build>


2.2.3 编写Student实体类

//推荐和表名一样
public class Student {
    //定义属性名,目前要求和sql表中的列名一样。
    private Integer id;
    private String name;
    private Integer age;
    private String email;

    public Student(){

    }
    public Student(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 "Studnet{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", email='" + email + '\'' +
                ", age=" + age +
                '}';
    }
}

2.2.4 编写持久层接口StudentDao

import com.lg.entity.Student;


import java.util.List;

//接口操作studnet表
public interface StudentDao {
    //查询所有数据
    public List<Student> selectStudents();

    /**
     *
     * @param student 表示要插入到数据库的数据。
     * @return int ,表示执行insert操作后的影响数据库的行数。
     */
    public int insertStudent(Student student);
}

2.2.5 编写持久层接口的映射文件StudentDao.xml


要求:

​ 创建位置:必须和持久层在相同的包里。

​ 名称:必须一持久层接口名称命名文件名,扩展名是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.lg.dao.StudentDao">
    <!--
      select:表示查询操作。
      属性:id:执行sql语法的唯一标识,mybatis会使用这个id的值来找到要执行的sql语句。
            可以自定义,但是建议使用接口中的方法名。
           resultType:表示结果类型的,是sql语句执行后得到的ResultSet得到的java对象的类型
                        值写类型的全限定名称
      -->

    <select id="selectStudents" resultType="com.lg.entity.Student">
    select id,name,age,email from student order by id
    </select>

    <insert id="insertStudent">
        insert into student value (17,"李广",20,"zhangfeng@qq.com")
    </insert>
</mapper>

<!--
    sql映射文件:写sql语句的,mybatis会执行这些sql
    1、指定约束文件
        <!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

      mybatis-3-mapper.dtd是约束文件的名称,
    2、约束文件的作用:用来限制当前文件出现的标签,属性必须符合mybatis的要求的。
    3、mapper 是当前文件的跟标签,必须的。
        属性:  namespace:叫做命名空间,唯一值的,可以自定义的字符串。
                建议使用dao接口的权限定名称。

    4、在maper标签中,可以使用特定的标签,表示数据库的特定操作。
        <select>:表示执行查询
        <update>:表示更新数据库
        <delete>:表示删除的
-->

2.2.6 编写mybatis的主配置文件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">
<!--
    mybatis 的主要配置文件:主要定义了数据库的配置信息,sql映射文件的位置

-->
<configuration>
<!--    settings:控制mybatis全局行为-->
    <settings>
<!--        输出日志-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    
    
<!--    环境配置:数据库的连接信息

        default:必须和某个environment中的id值一样。
        告诉mybatis使用哪个数据库发连接信息。也就是访问哪个数据库
    -->
    <environments default="mydev">

    <!-- environment:一个数据库信息的配置,环境
         id:唯一值,自定义,表示环境的名称
         可以有多个<environment id=""> </environment>标签 一个标签表示一个数据库
         -->
        <environment id="mydev">
            <!--  transactionManager:   mybatis的事务类型
                      type:JDBC(表示使用jdbc中的Connection对象commit,rollback做事务处理)-->
            <transactionManager type="JDBC"/>
            <!-- dataSource :表示数据源,连接数据库用的
                type:表示数据的类型,POOLED表示使用连接池
             -->
            <dataSource type="POOLED">
                <!-- driver url username password       是固定的,不能自定义       -->
<!--                数据库的驱动类名 因为使用的驱动是8.0以上的版本,得加上cj-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!--                连接数据库的url字符串-->
                <property name="url" value="jdbc:mysql://localhost:3306/lg?serverTimezone=UTC"/>
<!--                访问数据库的用户名-->
                <property name="username" value="root"/>
<!--                密码-->
                <property name="password" value="1011"/>
            </dataSource>
        </environment>
    </environments>

<!--    sql的映射文件的位置-->
    <mappers>
    <!--
    一个mapper标签指定一个文件的位置
       从类路径开始:
    -->
        <mapper resource="com\lg\dao\StudentDao.xml"/>
    </mappers>
</configuration>

2.2.7 编写测试类

import com.lg.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 MyApp {
    public static void main(String[] args) throws IOException {
        //访问mybatis读取student数据

        //1、定义mybatis主配置文件的名称,从类路径的根开始(target/classes)
        String path = "mybatis.xml";

        //2、读取文件
        InputStream in = Resources.getResourceAsStream(path);

        //3、创建SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        //4、创建SqlSessionFactory对象
        SqlSessionFactory factory = builder.build(in);
        //5、【重要】获取SqlSession对象,从创建SqlSessionFactory对象中获取
        SqlSession sqlSession = factory.openSession();//获取非自动提交事务的sqlSession对象。
        //6、【重要】指定要执行的sql语句标识,sql映射文件中的namespace+"."+标签的id值
        String sqlId = "com.lg.dao.StudentDao"+"."+"insertStudent";
//        7、执行sql语句 查询
        List<Student> students = sqlSession.selectList(sqlId);

 
       
       
       // 输出结果
        for (Student student : students) {
            System.out.println(student);
        }
        //这是插入操作
//        Student student = new Student(12,"ff","23423@qq.com",20);
//        int nums = sqlSession.insert(sqlId,student);
//        //mybatis默认是不提交事务的,所一在insert、update、delete后要手工提交事务。
//        sqlSession.commit();
//        System.out.println("执行结果:"+nums);
        
        
        //关闭sqlSession对象
        sqlSession.close();




    }
}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值