MyBatis 学习记录

步骤

  1. 开发准备
  2. 细节分析
  3. IDEA 模板创建
  4. 工具类
  5. mybaits文档

开发准备:

  1. 创建maven 文件
    图片文件结构

  2. pom 文件导入依赖:

<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
     <build>
<!--        拷贝xml文件到相应的文件中-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>
  1. 创建日志文件,可不创:
log4j.rootLogger = debug,console

log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} % -5p %c{1}:%L -%m%n
  1. 创建mybatis 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>
<!-- 一个输出格式,可以好的显示对数据库的操作 -->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mysqlname?amp useSSL=false amp serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
<!--    指定其他mapper文件的位置,找到其中的sql语句 从target/classes路径开始-->
    <mappers>
        <mapper resource="dao/StudentDao.xml"/>
    </mappers>
</configuration>
  1. 创建DAO 接口 ,每一个接口一个mapper文件来操作数据库
package dao;

import domain.Student;

import java.util.List;

public interface StudentDao {

    //查询一个学生
    Student selectStudentById(Integer id);
    int insertStudent(Student student); //int 表示添加的函数
    List<String> selectStudents();

}
  1. 对应的mapper文件,一般创建在同一个文件夹下。
<?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="dao.StudentDao">
<!--    <select id="selectBlog" resultType="Blog">-->
<!--        select * from Blog where id = #{id}-->
<!--    </select>-->
<!--    -->
<!--    查询一个学生
        id 自定义字符串,推荐使用dao接口中的方法名称 一个表一个xml文件
        resultType :执行sql 语句,把数据赋值给那个类型的Java对象
        -->
    <select id="selectStudentById" resultType="domain.Student">
        select * from student where id=1001
    </select>

    <select id="insertStudent">
        insert into student values(#{id},#{name},#{age},#{email})
    </select>

    <select id="selectStudents" resultType="domain.Student">
        select * from student
    </select>
</mapper>

<!--
1.约束文件:   "http://mybatis.org/dtd/mybatis-3-mapper.dtd"

2.namespace:必须有值,不能为空。唯一值。推荐Dao 接口全限定名称 dao.StudentDao     作用:参与识别sql语句。

3.在 mapper里面可以写<insert> <update> <delete> <select>

-->
  1. 创建数据库类:student
package domain;

public class Student {

    private Integer id;
    private String name;
    private Integer age;
    private String email;

    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;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", email='" + email + '\'' +
                '}';
    }
}

  1. 使用工具如navicat 创建数据库
    id int pk,name varchar(255),email varchar(255),age int;
  2. 测试 数据库的连接
import domain.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 org.junit.Test;
import utils.MyBatisUtil;


import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MyTest {
    @Test
    public void testSlectStudentById() throws IOException {
        //调用mybatis中的sql方法
        String config = "mybatis.xml";
        //获取输入流
        InputStream inputStream = Resources.getResourceAsStream(config);
        //使用SQLSessionFactoryBuilder 创建 sqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        try (SqlSession session = sqlSessionFactory.openSession()) {

            //            s = namespace+'.'+"select|delele|update|insert" 标签的id属性值
            String sqlid = "dao.StudentDao"+"."+"selectStudentById";

            Student student = (Student) session.selectOne(sqlid,"1001");
//            占位符:传递给 #{xxx}
            System.out.println("student = " + student);

            session.close();
        }
    }

    @Test
    public void testInsert() throws IOException {
        //调用mybatis中的sql方法
        String config = "mybatis.xml";
        //获取输入流
        InputStream inputStream = Resources.getResourceAsStream(config);
        //使用SQLSessionFactoryBuilder 创建 sqlSessionFactory

        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        try (SqlSession session = sqlSessionFactory.openSession()) {

            //            s = namespace+'.'+"select|delele|update|insert" 标签的id属性值
            String sqlid = "dao.StudentDao"+"."+"insertStudent";

//            也可以在这里传入Student对象 需要在xml文件中使用#{属性名} 来获取属性的值。
            Student student = new Student();
            student.setAge(20);
            student.setEmail("123456@qq.com");
            student.setId(1003);
            student.setName("wenjunze");
            int rows = session.insert(sqlid,student);
//            占位符:传递给 #{xxx}
            System.out.println("rows = " + rows);
            //需要手工提交事务
            session.commit();
            session.close();
        }

    }
}

IDEA 创建模板文件:

模板文件

使用工具类

package 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;

// 工具类 创建SqlSession 对象
public class MyBatisUtil {
    private static SqlSessionFactory factory = null;
    static{
        String config="mybatis.xml";
        try {
            InputStream inputStream = Resources.getResourceAsStream(config);
             factory = new SqlSessionFactoryBuilder().build(inputStream);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //创建方法,获取Sqlsession 的对象
    public static SqlSession getSqlSession(){
        SqlSession session =null;
        if(factory != null){
            session = factory.openSession();
        }
        return session;
    }
}

测试:

@Test
    public void utilsTest() {
        SqlSession session = MyBatisUtil.getSqlSession();
        String sqid = "dao.StudentDao"+"."+"selectStudents";
        List<Student> student = session.selectList(sqid);
        for (Student student1 : student) {
            System.out.println("student1 = " + student1);
        }
        session.close();


    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值