1. 程式人生 > >JavaEE MyBatis入門程式

JavaEE MyBatis入門程式

現在快來學習一下如何通過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="development">
            <!-- 使用資料庫事務管理 -->
            <transactionManager type="JDBC"/>
            <!-- 資料庫連線池 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost/spring"/>
                <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,結果如下: