MyBatis框架搭建

  1. 创建数据库及表:

  2.  (1)在 IDEA 中创建 Maven 工程,引入 MyBatis 框架依赖

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-api</artifactId>
          <version>5.10.2</version>
          <scope>test</scope>
        </dependency>
    
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.26</version>
        </dependency>
        <!--mybatis-->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.5.2</version>
        </dependency>
      </dependencies>

  3. (2)创建 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核心配置文件-->
    <configuration>
    <!--    加载数据库配置文件-->
        <properties resource="db.properties"/>
        <environments default="development">
    <!--        开发环境数据库-->
            <environment id="development">
    <!--            使用jdbc事务管理-->
                <transactionManager type="JDBC"/>
    <!--            配置数据库连接池-->
                <dataSource type="POOLED">
    <!--                数据库驱动类-->
                    <property name="driver" value="${jdbc.driver}"/>
    <!--                数据库访问地址-->
                    <property name="url" value="${jdbc.url}"/>
    
                    <property name="username" value="${jdbc.username}"/>
                    <property name="password" value="${jdbc.password}"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="mapper/ProviderMapper.xml"/>
            <mapper resource="mapper/BillMapper.xml"/>
    
        </mappers>
    </configuration>
    
    
    

    (3)设计供应商实体(Provider)

    package com.xxw.entity;
    
    public class Provider {
        private int id;
        private String proCode;
        private String proName;
        private String proDesc;
        private String proContact;
        private String proPhone;
        private String proAddress;
        private String proGax;
        private int createdBy;
        private String creationDate;
        private String modifyDate;
        private String modifyBy;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getProCode() {
            return proCode;
        }
    
        public void setProCode(String proCode) {
            this.proCode = proCode;
        }
    
        public String getProName() {
            return proName;
        }
    
        public void setProName(String proName) {
            this.proName = proName;
        }
    
        public String getProDesc() {
            return proDesc;
        }
    
        public void setProDesc(String proDesc) {
            this.proDesc = proDesc;
        }
    
        public String getProContact() {
            return proContact;
        }
    
        public void setProContact(String proContact) {
            this.proContact = proContact;
        }
    
        public String getProPhone() {
            return proPhone;
        }
    
        public void setProPhone(String proPhone) {
            this.proPhone = proPhone;
        }
    
        public String getProAddress() {
            return proAddress;
        }
    
        public void setProAddress(String proAddress) {
            this.proAddress = proAddress;
        }
    
        public String getProGax() {
            return proGax;
        }
    
        public void setProGax(String proGax) {
            this.proGax = proGax;
        }
    
        public int getCreatedBy() {
            return createdBy;
        }
    
        public void setCreatedBy(int createdBy) {
            this.createdBy = createdBy;
        }
    
        public String getCreationDate() {
            return creationDate;
        }
    
        public void setCreationDate(String creationDate) {
            this.creationDate = creationDate;
        }
    
        public String getModifyDate() {
            return modifyDate;
        }
    
        public void setModifyDate(String modifyDate) {
            this.modifyDate = modifyDate;
        }
    
        public String getModifyBy() {
            return modifyBy;
        }
    
        public void setModifyBy(String modifyBy) {
            this.modifyBy = modifyBy;
        }
    
        @Override
        public String toString() {
            return "Provider{" +
                    "\n  id=" + id +
                    ",\n  proCode='" + proCode + '\'' +
                    ",\n  proName='" + proName + '\'' +
                    ",\n  proDesc='" + proDesc + '\'' +
                    ",\n  proContact='" + proContact + '\'' +
                    ",\n  proPhone='" + proPhone + '\'' +
                    ",\n  proAddress='" + proAddress + '\'' +
                    ",\n  proGax='" + proGax + '\'' +
                    ",\n  createdBy=" + createdBy +
                    ",\n  creationDate='" + creationDate + '\'' +
                    ",\n  modifyDate='" + modifyDate + '\'' +
                    ",\n  modifyBy='" + modifyBy + '\'' +
                    "\n}";
        }
    }
    

    (4)设计 SQL 映射文件

    <?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=绑定一个对应的Dao/Mapper接口-->
    <!--namespacs值与接口来全限定名一致(接口类的包名加类名)-->
    <!--select属性id标签值与接口类的方法名一致-->
    <!--prominenttyp属性值与方法的形参类型一致-->
    <!--resultType属性值与方法的返回值类型相一致,如果类型为集合属性值是集合内元素的类型 -->
    <mapper namespace="com.xxw.mapper.ProviderMapper">
        <!--select查询语句-->
        <select id="queryAll" resultType="com.xxw.entity.Provider">
            select * from sy2.smbms_provider
        </select>
    <!--    查询供应商编码(proCode)为“HB_GYS001”的供应商名称、联系人和联 系电话-->
        <select id="selectProviderByCode" resultType="com.xxw.entity.Provider">
            SELECT proCode, proName, proContact, proPhone
            FROM sy2.smbms_provider
            WHERE proCode = #{proCode}
        </select>
    <!--    (2)查询(proName)“乐摆日用品厂”的联系电话和地址。-->
        <select id="selectProviderByName" resultType="com.xxw.entity.Provider">
            select proPhone,proAddress from sy2.smbms_provider
            where proName = #{proName}
        </select>
    <!--   (3)查询供应商地址(proAddress)在“北京”的供应商名称列表-->
    
    
        <select id="selectProviderByAddress" resultType="com.xxw.entity.Provider">
            <bind name="pattern" value="proAddress + '%'" />
            SELECT proName
            FROM sy2.smbms_provider
            WHERE proAddress LIKE #{pattern}
        </select>
    <!--    运用 MyBatis 查询供应商地址(proAddress)在“北京”,且(proDesc)经营-->
    <!--    “五粮液”的所有供应商信息,并在控制台显示供应商名称和主营产品,-->
        <select id="selectProviderByAddressDesc" resultType="com.xxw.entity.Provider">
            SELECT proName, proAddress, proDesc
            FROM sy2.smbms_provider
            WHERE 1=1
                AND proAddress LIKE CONCAT('%', #{proAddress}, '%')
                AND proDesc LIKE CONCAT('%', #{proDesc}, '%')
    
        </select>
    
    </mapper>

  4. 引入 Junit5 单元测试依赖,并创建测试类和测试方法,在测试方法中调 用 MyBatis API 查询供应商列表并在控制台中打印出来

     

package com.xxw;

import com.xxw.entity.Provider;
import com.xxw.mapper.BillMapper;
import com.xxw.mapper.ProviderMapper;
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.jupiter.api.Test;

import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.ServiceLoader;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;

public class AppTest {
    @Test
    public void testGetUserList() {
        String configUrl = "mybatis-config.xml";
        InputStream is;
        try {
// 1.加载配置文件文件到java流中
            is = Resources.getResourceAsStream(configUrl);
// 2.创建SqLSessionFactory对象
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
// 3.获得SqlSession对象
            SqlSession session = factory.openSession();
// 4.获取接口类对象
            ProviderMapper mapper = session.getMapper(ProviderMapper.class);
// 5,查询表所有内容
            List<Provider> lst = mapper.queryAll();
            System.out.println(lst);
//            查询供应商编码(proCode)为“HB_GYS001”的供应商名称、联系人和联系电话

            session.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    @Test
    public void testSelectProviderByCode() {
        String configUrl = "mybatis-config.xml";
        InputStream is;
        try {
// 1.加载配置文件文件到java流中
            is = Resources.getResourceAsStream(configUrl);
// 2.创建SqLSessionFactory对象
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
// 3.获得SqlSession对象
            SqlSession session = factory.openSession();
// 4.获取接口类对象
            ProviderMapper mapper = session.getMapper(ProviderMapper.class);

//            查询供应商编码(proCode)为“HB_GYS001”的供应商名称、联系人和联系电话

            Provider pro = mapper.selectProviderByCode("HB_GYS001");

            System.out.println(pro);
            session.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    @Test
    public void testSelectProviderByName() {
        String configUrl = "mybatis-config.xml";
        InputStream is;
        try {
// 1.加载配置文件文件到java流中
            is = Resources.getResourceAsStream(configUrl);
// 2.创建SqLSessionFactory对象
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
// 3.获得SqlSession对象
            SqlSession session = factory.openSession();
// 4.获取接口类对象
            ProviderMapper mapper = session.getMapper(ProviderMapper.class);

//          查询(proName)“乐摆日用品厂”的联系电话和地址。

            Provider pro = mapper.selectProviderByName("乐摆日用品厂");

            System.out.println(pro);
            session.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    @Test
    public void testSelectProviderByAddress() {
        String configUrl = "mybatis-config.xml";
        InputStream is;
        try {
// 1.加载配置文件文件到java流中
            is = Resources.getResourceAsStream(configUrl);
// 2.创建SqLSessionFactory对象
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
// 3.获得SqlSession对象
            SqlSession session = factory.openSession();
// 4.获取接口类对象
            ProviderMapper mapper = session.getMapper(ProviderMapper.class);

//<!--   (3)查询供应商地址(proAddress)在“北京”的供应商名称列表
            List<Provider> pro = mapper.selectProviderByAddress("北京");
            System.out.println(pro);
            session.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    @Test
    public void testSelectProviderByAddressDesc() {
        String configUrl = "mybatis-config.xml";
        InputStream is;
        try {
// 1.加载配置文件文件到java流中
            is = Resources.getResourceAsStream(configUrl);
// 2.创建SqLSessionFactory对象
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
// 3.获得SqlSession对象
            SqlSession session = factory.openSession();
// 4.获取接口类对象
            ProviderMapper mapper = session.getMapper(ProviderMapper.class);

//<!--   (3)查询供应商地址(proAddress)在“北京”的供应商名称列表
            List<Provider> pro = mapper.selectProviderByAddressDesc("北京","五粮液");
            System.out.println(pro);
            session.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值