zoukankan      html  css  js  c++  java
  • Mybatis入门必备

    一、Mybatis简介

    MyBatis 源于 Apache 的一个开源项目 iBatis,而 iBatis 一词则来源于“internet”和“abatis”的组合,2010年这个项目由 Apache Software Foundation 迁移到了 Google Code,并且改名为MyBatis ,2013年11月其又迁移到 Github。MyBatis 是一个基于 Java 的支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架,相比于基于面向对象使用 HQL 语言的 Hibernate 框架,MyBatis 则基于 SQL 面向结果集,因此其效率更高。

    官方文档:https://mybatis.org/mybatis-3/zh/index.html

    Mybatis就是对于JDBC的封装!!!

    二、开发步骤(仅以select * 为例)

    1、导包:https://mvnrepository.com/artifact/org.mybatis/mybatis 

    以3.5.4版本为例,

    mybatis-3.5.4.jar

    mysql-connector-java-8.0.19.jar

    2.编写实体类:

    a、mybatis在操作数据库时,表的字段名最好与pojo类的属性名保持一致,因为mybatis默认采用的是自动映射,通过过去字段的名字得到对应的值,然后再通过反射到类里面寻找名字相同的属性名,调用对应的setter方法将数据赋值给属性

    b、如果字段名与属性名不一致可以通过sql语句给查询的字段取别名,但是别名必须与对应的属性名一致

    public class User {
    private int id;                     //id
    private String account;     //账号
    private String password;  //密码
    
    }
    

    3.创建mybatis-config.xml配置文件

    注意:该xml文件应该放在src文件下

    该配置文件用于存放数据库连接相关数据

    <?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">
                    <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                    <property name="url"
                        value="jdbc:mysql://localhost:3306/数据库名?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=UTC" />
                    <property name="username" value=用户名 />
                    <property name="password" value=密码 />
                </dataSource>
            </environment>
        </environments>
    
        <mappers>
            <!--esource="存放sql语句的xml详细地址"-->
            <mapper resource="com/swpu/mapper/UsersMapper.xml"/>
        </mappers>
    </configuration>    

    4.创建UsersMapper.xml文件

    注意:新建mapper包,并将UsersMapper.xml放在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">
      <!-- namespace:命名空间,作用与包名一样   用来区分相同id的sql-->
    <mapper namespace="abc">
    <!-- id 为sql的唯一标识,同一个命名空间下不能有id相同的sql(自己定义)
        resultType:将查询出来的数据封装成什么类型的对象(存放src以下完整的类名)
     -->
      <select id="allUsers" resultType="com.swpu.entity.User">
        select * from mall_user
      </select>
    </mapper>

    5.创建测试类

    public class MybatisTest {
        public static void main(String[] args) throws IOException {
            
            //自动到src下找配置文件
            InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
    
            //创建工厂
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
    
            //创建session:底层就是利用statement对象来操作数据库
            SqlSession session  =factory.openSession();
            
            //直接利用session来执行sql进行查询
            List<User> selectList = session.selectList("abc.findall");
            //遍历
            selectList.forEach(e->System.out.println(e.toString()));
    //关闭statement connection
            session.close();
            
        }
    }

    mybatis执行逻辑

    a:首先通过输入流读取mybatis.xml与mapper.xml文件中的配置信息

    b:创建session,一个session就是一次会话

    c:通过selectList方法中的参数找到对应的sql语句,同时创建一个statement去查询数据库

    d:查询时会得到一个ResultSet,mybatis框架根据反射自动的将得到的数据封装成pojo类对象

    e:如果是selectList方法,则会自动将这些对象封装成List对象并返回

    6.执行结果:

     
  • 相关阅读:
    用html5标记一段文章模块
    自定义事件
    html5表单
    对canvas封装的js库
    canvas
    第五周进度总结
    第七周进度总结
    大道至简阅读笔记
    第六周进度总结
    第三周进度总结
  • 原文地址:https://www.cnblogs.com/rmbdswd/p/13965280.html
Copyright © 2011-2022 走看看