• Mybatis


    一.MyBatis简介.

        MyBatis是一个支持普通SQL查询存储过程高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

     

    二.MyBatis快速入门.

      1.在mevn库导入mybatis包和mysql包

     <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.5.1</version>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>6.0.6</version>
        </dependency>

    2.在main文件夹下创建resources文件并标记为资源文件,在该文件夹下创建mybatis的配置文件(mybatis-config.xml).

      XML 配置文件中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。

    <?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="dev">
            <environment id="dev">
                <!--配置事务管理器-->
                <transactionManager type="JDBC"/>
                <!--配置数据源的类型为链接池类型-->
                <dataSource type="POOLED">
                    <!--配置数据库-->
                    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/zcy?serverTimezone=Asia/Shanghai"/>
                    <property name="username" value="root"/>
                    <property name="password" value="357159"/>
                </dataSource>
            </environment>
        </environments>
    </configuration>

    3.加载mybatis配置文件.

    从 SqlSessionFactory 中获取 SqlSession,SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 对象来直接执行已映射的 SQL 语句
    public void init() throws IOException {
    
            //读取成输入流,注意为ibatis.io包下的
            InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in);
            SqlSession session = sessionFactory.openSession();
    }

    4.创建一个接口,.通过这个接口连接数据库查询.

       在项目的包下创建一个专门用来装接口的包mapper.

    package com.lanou.demo.mapper;
    import com.lanou.demo.bean.OrderBean;
    import java.util.List;
    
    public interface OrderMapper {
        
        //查询所有
        List<OrderBean> findAll();
        List<OrderBean> findDetails();
    }

    5.创建实体类映射数据库的数据.

    package com.lanou.demo.bean;
    
    import java.util.List;
    
    public class OrderBean {
    
        private Integer orderId;
        private String orderCode;
        private Integer userId;
    
        public Integer getOrderId() {
            return orderId;
        }
    
        public void setOrderId(Integer orderId) {
            this.orderId = orderId;
        }
    
        public String getOrderCode() {
            return orderCode;
        }
    
        public void setOrderCode(String orderCode) {
            this.orderCode = orderCode;
        }
    
        public Integer getUserId() {
            return userId;
        }
    
        public void setUserId(Integer userId) {
            this.userId = userId;
        }
    
     
    }

    6.资源文件夹下创建mapper的xml配置文件,这个文件相当于实现了上面接口的类,用来写sql语句.

     注意:这个xml文件要跟接口在相同路径的包下,比如我的接口创建在java文件下的com.lanou.demo.mapper包下,

             那么这个xml文件对应的路径为resources资源文件下的com.lanou.demo.mapper包下.这样编译后接口和xml文件才会在同一个路径下

             在resources文件下创建包要用"/",创建文件夹,起名为:com/lanou/demo/mapper 创建后会自动变为包:com.lanou.demo.mapper

    然后在mapper中创建对数据库操作的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">
    
    <!--命名空间,当前的mapping文件的唯一标识-->
    <!--namespace指明这是实现的接口的路径--> <mapper namespace="com.lanou.demo.mapper.OrderMapper">
    <!--sql语句-->
    <!--id是对应接口中的方法,名字要保持一致  resultType表示该sql语句返回的结果集类型,比如这里是OrderBean实体类类型-->
    <select id="findAll" resultType="com.lanou.demo.bean.OrderBean">
      select order_id,order_code,user_id,
    us.user_id ,us.username
    from tb_order
    </select>

    <!--如果接口方法中有参数,也就是按条件对数据库操作时
      参数使用#{}的形式来获取
    里面的变量名有规则:如果接口中的方法参数只有一个,并且类型都是值类型
    那么这个名起什么都可以.
    如果接口中传递的参数是一个对象,那么每一条属性都是一个参数
    获取参数的时候,{}里面必须写的是属性的名字
    -->
    <select id="findOne" resultType="com.lanou.demo.bean.UserBean">
    select * from user where uid = #{uid}
    </select>
     
    </mapper>

    7.在mybatis-config.xml配置文件中引入mapper的配置文件.把下面代码添加到mybatis配置文件的<configuration>标签里

       <!--引入所有的xml文件-->
    <mappers> <!--引入方式--> <!-- <mapper class="com.lanou.demo.mapper.UserRepository"/>
    --> <!--批量引入Mapper文件--> <package name="com.lanou.demo.mapper"/> </mappers>

    8.通过 SqlSession 实例来直接执行已映射的 SQL 语句,通过接口得到一个接口的实例

    public void init() throws IOException {
    
            //读取成输入流,注意为ibatis.io包下的
            InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in);
            //从 SqlSessionFactory 中获取 SqlSession,
            // SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。
            SqlSession session = sessionFactory.openSession(); // 通过 SqlSession 实例来直接执行已映射的 SQL 语句 
    //通过接口得到一个接口的引用
    OrderMapper orderMapper = session.getMapper(OrderMapper.class);
    //调用口中的方法去xml文件中找到对应的sql语句
    List
    <OrderBean> all = orderMapper.findAll(); }
  • 相关阅读:
    力扣3. 无重复字符的最长子串
    力扣724. 寻找数组的中心索引
    力扣105. 从前序与中序遍历序列构造二叉树
    力扣541. 反转字符串 II
    力扣496. 下一个更大元素 I
    力扣129. 求根到叶子节点数字之和
    力扣628. 三个数的最大乘积
    力扣415. 字符串相加
    力扣409. 最长回文串
    力扣404. 左叶子之和
  • 原文地址:https://www.cnblogs.com/zhouchangyang/p/10951837.html
Copyright © 2020-2023  润新知