JavaEE MyBatis入門程式
阿新 • • 發佈:2018-12-15
現在快來學習一下如何通過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,結果如下: