版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40788630/article/details/83044700
现在快来学习一下如何通过MyBatis框架,根据客户编号查询客户信息,以及根据客户名模糊查询客户信息
一、根据客户编号查询客户信息
根据客户编号查询客户信息主要是通过查询客户表中的主键(这里默认客户编号为主键)
1、在MySQL数据库中创建一个名为MyBatis的数据库,在此数据库中创建一个t_customer表,同时预先插入几条数据,SQL语句如下:
create database mybatis;
use mybatis;
create table t_customer(
id int(32) primary key auto_increment,
username varchar(50),
jobs varchar(50),
phone varchar(16));
insert into t_customer values ('1','joy','doctor','13745874578'),
('2','jack','teacher','13521210112'),
('3','tom','worker','15179405961');
2、在eclipse中创建chapter06的web项目,将MyBatis的核心jar包,lib目录中的依赖jar包,以及mysql数据库的驱动jar包一同添加到web项目的lib目录下,并发布到类路径中,添加后的lib目录如下所示:
3、由于MyBatis默认使用log4j输出日志信息,所以如果要查看控制台的输出SQL语句,那么就需要在classpath路径下配置其日志文件,在项目的src目录下创建log4j.properties文件,编辑后的文件内容如下:
# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.itheima=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
4、建立持久类
在src目录下创建一个com.itheima.po包,在该包下创建持久化类Customer,并在类中声明id,username,jobs和phone属性,以及对应的getter/setter方法,代码如下:
package com.itheima.po;
public class Customer {
private Integer id;
private String username;
private String jobs;
private String phone;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getJobs() {
return jobs;
}
public void setJobs(String jobs) {
this.jobs = jobs;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String toString() {
return "Customer [id="+id+",username="+username+",jobs="+jobs+",phone="+phone+"]";
}
}
从上述代码中可以看出其实持久层类Customer与普通的javabean并没有什么区别,实际上Customer就是一个pojo(普通Java对象)
5、在src目录下,创建一个com.itheima.mapper包,并在包中创建映射文件CustomerMapper.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">
<mapper namespace="com.itheima.mapper.CustomerMapper">
<select id="findCustomerById" parameterType="Integer" resultType="com.itheima.po.Customer">
select * from t_customer where id = #{id}
</select>
</mapper>
6、在src目录下,创建MyBatis的核心配置文件,mybatis——config.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>
<!-- 1.配置环境,默认的环境id为mysql -->
<environments default="mysql">
<!-- 1.2.配置id为mysql的数据库环境 -->
<environment id="mysql">
<!-- 使用数据库事务管理 -->
<transactionManager type="JDBC"/>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="itcst"/>
</dataSource>
</environment>
</environments>
<!-- 2.配置Mapper的位置 -->
<mappers>
<mapper resource="com/itheima/mapper/CustomerMapper.xml"/>
</mappers>
</configuration>
7、在src目录下创建一个com.itheima.test包,在该包下创建测试石磊MybatisTest,并在类中编写测试方法findCustomerByIdTest(),代码如下所示:
package com.itheima.test;
import java.io.InputStream;
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 com.itheima.po.Customer;
public class MybatisTest {
@Test
public void findCustomerByIdTest() throws Exception{
//1.读取配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//2.根据配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//3.通过SqlSessionFactory创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.SqlSession执行映射文件中定义的sql,并返回映射结果
Customer customer = sqlSession.selectOne("com.itheima.mapper.CustomerMapper.findCustomerById",1);
//输出打印结果
System.out.println(customer.toString());
//5.关闭SqlSession
sqlSession.close();
; }
}
8、使用JUnit4测试执行后控制台输出结果如下:
从图中可以看出使用MyBatis框架以及成功查询出了id为一的客户信息
二、根据客户名模糊查询
1、在映射文件CustomerMapper.xml中添加根据客户名模糊查询客户信息列表的SQL语句
<!-- 根据客户名模糊查询 -->
<select id="findCustomerByName" parameterType="String" resultType="com.itheima.po.Customer">
select * from t_customer where username like concat('%',#{value},'%');
</select>
2、在测试类MybatisTest类中,添加一个测试方法,findCustomerByNameTest方法,其代码如下:
@Test
public void findCustomerByNameTest() throws Exception{
//1.读取配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//2.根据配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//3.通过SqlSessionFactory创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.SqlSession执行映射文件中定义的sql,并返回映射结果
List<Customer> customers = sqlSession.selectList("com.itheima.mapper.CustomerMapper.findCustomerByName","j");
//输出打印结果
for(Customer customer :customers) {
System.out.println(customer);
}
//5.关闭SqlSession
sqlSession.close();
}
3、使用JUnit4执行测试方法,,控制台输出如下:
可以看到使用模糊查询时,查询字母j,打印出了joy和jack的信息
我们在试试查询字母o,结果如下: