JavaEE MyBatis入门程序

版权声明:本文为博主原创文章,未经博主允许不得转载。 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,结果如下:

猜你喜欢

转载自blog.csdn.net/qq_40788630/article/details/83044700