zoukankan      html  css  js  c++  java
  • MyBatis快速入门

    MyBatis快速入门

    简介

    MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。
    MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
    MyBatis可以使用简单的XML用于配置和原始映射,将接口和Java的POJO类映射成数据库中的记录
    使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

    历史

    原是apache的一个开源项目iBatis
    2010年6月这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。
    iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。

    为什么要用MyBatis?

    JDBC
    SQL夹在Java代码块里,耦合度高导致硬编码内伤
    维护不易且实际开发需求中sql是有变化,频繁修改的情况多见
    要自已创建connection、创建statement、手动设置参数、结果集检索等
    Hibernate
    长难复杂SQL,对于Hibernate而言处理也不容易
    内部自动生产的SQL,不容易做特殊优化。
    基于全映射的全自动框架,javaBean存在大量字段时无法只映射部分字段。导致数据库性能下降。
    Mybatis
    对开发人员而言,核心sql还是需要自己优化
    MyBatis是一个半自动化的持久化层框架。
    MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。

    对比三者,MyBatis的优势显而易见,所以现在MyBatis很受欢迎。

    开发步骤

    1. 下载Mybatis核心包

    http://www.mybatis.org/mybatis-3/getting-started.html
    https://github.com/mybatis/mybatis-3/releases

    2.创建工程,引入MyBatis核心包及依赖包

    除了MyBatis提供的jar包,还需要加上数据库连接的jar包。需要lombok则需要加上lombok的jar包。

    3.创建customer表,建立与表对象的domain

    package cn.rayfoo.bean;
    
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    /**
     * Created by rayfoo@qq.com Luna on 2020/2/4 15:29
     */
    @Data@NoArgsConstructor
    public class Customer {
        private Integer cust_id;
        private String cust_name;
        private String cust_profession;
        private String cust_phone;
        private String email;
    }

    4.创建MyBatis核心配置文件SqlMappingConfig.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>
    <!--配置SQL打印-->
    <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.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://rayfoo.cn:3306/test"/>
    <property name="username" value="root"/>
    <property name="password" value="****"/>
    </dataSource>
    </environment>
    </environments>
    <mappers>
    <mapper resource="cn/rayfoo/mapper/CustomerMapper.xml"/>
    </mappers>
    </configuration>

    5.编写Mapper接口

    package cn.rayfoo.mapper;
    
    import cn.rayfoo.bean.Customer;
    
    import java.util.List;
    
    /**
     * Created by rayfoo@qq.com Luna on 2020/2/4 15:45
     */
    public interface CustomerMapper {
    
        /**
         * 查询所有记录
         *
         * @return
         */
        List<Customer> findAll();
    }

    6.编写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="cn.rayfoo.mapper.CustomerMapper">
        <select id="findAll" resultType="cn.rayfoo.bean.Customer">
            select * from customer
        </select>
    </mapper>

    7.编写测试类进行测试

    package cn.rayfoo.test;
    
    import cn.rayfoo.bean.Customer;
    import cn.rayfoo.mapper.CustomerMapper;
    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 sun.security.tools.keytool.Resources_de;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    /**
     * Created by rayfoo@qq.com Luna on 2020/2/4 15:58
     */
    public class TestApp {
    
        @Test
        public void test01() throws IOException {
            InputStream is = Resources.getResourceAsStream("mybatis-cfg.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            CustomerMapper mapper = sqlSession.getMapper(CustomerMapper.class);
            List<Customer> all = mapper.findAll();
            System.out.println(all);
        }
    
    }
  • 相关阅读:
    机器学习-分类算法-决策树,随机森林10
    机器学习-分类算法-模型选择与调优09
    机器学习-分类算法-精确率和召回率08
    机器学习-分类算法-朴素贝叶斯算法07
    机器学习-分类算法-K-近邻算法06
    java读取自定义配置文件并引用
    kafka发布消息报错LEADER_NOT_AVAILABLE
    Kettle位置参数(Argument)、命名参数(Parameter)、变量(Variable)
    kettle里的两个参数和一个变量
    如何在命令行下运行kettle的作业(job)和转换(transform)
  • 原文地址:https://www.cnblogs.com/zhangruifeng/p/12260756.html
Copyright © 2011-2022 走看看