1.MyBatis简介

        MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

        iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)

        什么是框架:框架就是别人搭建好的某些功能,你只需要引用该框架并加入自己的业务代码。

好处: 提高我们的开发效率。可以简化jdbc的操作以及占位符赋值以及查询结果集的封装。

简介

        MyBatis 是一款优秀的持久层Dao框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Java实体类)映射成数据库中的记录.

当前,最新版本是MyBatis 3.5.3 ,其发布时间是2019年10月20日。

mybatis – MyBatis 3 | Introduction

2.ORM思想

        ORM(对象关系映射 Object Relational Mapping)是通过描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。全ORM框架主要有:Hibernate(不用写一行sql代码),EclipseLink。MyBatis属于半ORM的框架,因为需要自己建表,并需要自己写sql语句。 SSH(struts,srping,hibernate)基本不用。 SSM(springMVC,spring,mybatis)

3.如何使用MyBatis(环境搭建)

一、引入jar包(在maven中配置)

核心包{

mybatis-3.4.6.jar : mybatis核心包

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

}

需要的其他包{

mysql-connector-java-8.0.11.jar :mysql数据库包

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

junit-4.9.jar : 用于单元测试包

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

}

二、配置文件

第一步 在resources下创建mybatis的配置文件

前提是你一定要有一个名为mybatis的数据库

<?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="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                //name中的值不要改,value里的值改为你自己的路径和内容
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
</configuration>

第二步 创建mybatis和数据库的映射文件

作用:映射实体和表之间的映射关系 

在配置文件下新建文件夹命名为mapper,在mapper下创建需要映射的xml文件

 第三步 把映射文件注册到配置文件上

        这一步是在mybatis.xml文件中操作的在mybatis.xml文件下加入如下的代码

  <mappers>
                        //    这里对应的是你mapper文件下的Mapper
        <mapper resource="mapper/studentMapper.xml"/>
   </mappers>

4.测试MyBatis ,mybatis完成crud操作

        一、在mapper文件中打开你创建的Mapper.xml文件

         二、在mapper标签中写数据库语句代码

        增删改查基础代码

mapper namespace="StudentMapper">
 <!--
          select等标签用于查询的标签
             id:标签的唯一标识
             resultType: 定义返回的类型 把sql查询的结果封装到哪个实体类钟
         #{id}===表示占位符等价于?  这是mybatis框架的语法
         当用到多个占位符时,#{}中的值一定要与你封装的实体类的属性一致
    -->
    <select id="getstudent" resultType="com.gsh.entity.Student">
        select * from student where id=#{id}
    </select>
    <insert id="addstudent" parameterType="com.gsh.entity.Student">
        insert into student values(null,#{name},#{age},#{address},#{sex})
    </insert>
    <delete id="delestudent" parameterType="int">
        delete from student where id=#{id}
    </delete>
    <update id="updatestudent" parameterType="com.gsh.entity.Student">
        update student set name=#{name},age=#{age},address=#{address},sex=#{sex} where id=#{id}
    </update>
    <select id="findall" resultType="com.gsh.entity.Student">
        select *from student
    </select>
</mapper>

        三、在测试类中测试

        1.读取mybatis配置文件的内容

        2. 获取SqlSessionFactory对象

        3. 获取SqlSession对象----封装了对数据库操作的各种方法

        相关代码如下

 //查询一个学生信息
    @Test
    public void select_one()throws Exception{
        //1.读取配置文件内容
        Reader reader = Resources.getResourceAsReader("mybatis.xml");
        //2.获取SqlSerrionFactory对象
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        //3.获取sqlserrion对象
        SqlSession session= factory.openSession();
        //4。执行数据库操作
        Student student = session.selectOne("StudentMapper.find_one",929);
        System.out.println(student);
        //提交
        session.commit();
        //关闭
        session.close();
    }
    //查询全部学生信息
    @Test
    public void select_all() throws Exception{
        //1.读取配置文件内容
        Reader reader = Resources.getResourceAsReader("mybatis.xml");
        //2.获取Sqlserrionfactory对象
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        //3.获取Sqlsession对象
        SqlSession session= factory.openSession();
        List<Student> students = session.selectList("StudentMapper.find_all");
        System.out.println(students);
        session.commit();
        session.close();
    }
    //添加一个学生信息
    @Test
    public void add_one()throws Exception{
        //1.读取配置文件
        Reader reader = Resources.getResourceAsReader("mybatis.xml");
        //2.获取sqlsessionfactory对象
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        //3.获取Sqlsession对象
        SqlSession session= factory.openSession();
        Student student=new Student();
        student.setName("谢大脚");
        student.setAge(38);
        student.setAddress("象牙山");
        student.setSex(0);
        int row=session.insert("StudentMapper.add_one",student);
        System.out.println(row);
        session.commit();
        session.close();
    }
    //删除一个学生信息
    @Test
    public void dele_one()throws Exception{
        //读取配置文件
        Reader reader = Resources.getResourceAsReader("mybatis.xml");
        //获取sqlsessionfactory对象
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        //获取sqlsession对象
        SqlSession session= factory.openSession();
        int row = session.delete("StudentMapper.dele_one", 931);
        System.out.println(row);
        session.commit();
        session.close();
    }
    //修改一个学生的信息
    @Test
    public void update_one()throws Exception{
        //读取配置文件
        Reader reader = Resources.getResourceAsReader("mybatis.xml");
        //获取sqlsessionfactory对象
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        //获取sqlsession对象
        SqlSession session= factory.openSession();
        Student student=new Student();
        student.setId(929);
        student.setName("谢大脚");
        student.setAge(45);
        student.setAddress("象牙山");
        student.setSex(0);
        int row = session.update("StudentMapper.update_one", student);
        System.out.println(row);
        session.commit();
        session.close();

    }

 5.添加sql日志

       一、在maven中添加jar包

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

        二、在配置文件下新建log4j.properties 配置文件

        在文件中写入以下代码(选一种即可)

简单的:

log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

详细的

#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file

#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n

#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
                         //路径写你要存放日志文件的路径
log4j.appender.file.File=路径
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n

#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐