-
创建数据库及表:
-
(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>
-
(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>
-
引入 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());
}
}
}