mybatis快速入門查詢和介面查詢
阿新 • • 發佈:2019-02-18
什麼是 MyBatis ?
MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和對映原生資訊,將介面和 Java 的 POJOs(Plain Old Java Objects,普通的 Java物件)對映成資料庫中的記錄。
mybatis快速入門
① 建立一個java專案或者Web專案,如下圖
②匯入mysql的jar包,如圖
③開啟mysql建立資料庫表
CREATE TABLE `user` (
`id` int(11) NOT NULL DEFAULT '0',
`name` varchar(20) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
④在src目錄下建立mysql.properties 裡面填資料庫連線的資訊
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis username=root password=root
然後在src目錄下建立mybatis-conf.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> <!--引入資料庫連線.properties --> <properties resource="mysql.properties"></properties> <!-- default 選擇連線的資料庫 --> <environments default="development"> <!--配置資料庫連線資訊 --> <environment id="development"> <transactionManager type="JDBC"/> <!--dataSource type 有三個屬性 ①UNPOOLED 不使用連線池的資料來源,即不使用快取 ②使用連線池 即使用快取 ③jndl 這個資料來源的實現是為了使用如 Spring 或應用伺服器 這類的容器, 容器可以集 中或在外部配置資料來源,然後放置一個 JNDI 上下文的引用--> <dataSource type="UNPOOLED"> <property name="driver" value="${driverClassName}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!-- 註冊 xml檔案 --> <mappers> <mapper resource="com/hp/mapping/userMapping.xml"/> </mappers> </configuration>
⑤建立實體類 User 包名是com.hp.bean.User
package com.hp.bean;
public class User {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "USER [id=" + id + ", name=" + name + "]";
}
}
⑥定義操作user表的sql對映檔案userMapper.xml 包名為com.hp.mapping.userMapping.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.hp.mapping.userMapping">
<!--
根據id查詢得到一個user物件
-->
<select id="getUser" parameterType="Integer"
resultType="com.hp.bean.User">
select * from user where id=#{id}
</select>
</mapper>
⑦建立textDemo測試類
package com.hp.text;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.hp.bean.User;
public class TextDemo {
public static void main(String[] args) {
//mybatis的配置檔案
String resource = "mybatis-conf.xml";
//使用類載入器載入mybatis的配置檔案(它也載入關聯的對映檔案)
InputStream is = TextDemo.class.getClassLoader().getResourceAsStream(resource);
//構建sqlSession的工廠
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//使用MyBatis提供的Resources類載入mybatis的配置檔案(它也載入關聯的對映檔案)
//Reader reader = Resources.getResourceAsReader(resource);
//構建sqlSession的工廠
//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//建立能執行對映檔案中sql的sqlSession
SqlSession session = sessionFactory.openSession();
/**
* 對映sql的標識字串,
* me.gacl.mapping.userMapper是userMapper.xml檔案中mapper標籤的namespace屬性的值,
* getUser是select標籤的id屬性值,通過select標籤的id屬性值就可以找到要執行的SQL
*/
String statement = "com.hp.mapping.userMapping.getUser";//對映sql的標識字串
//執行查詢返回一個唯一user物件的sql
User user = session.selectOne(statement, 1);
System.out.println(user);
}
}
執行效果為
第二種方式我們還可以 利用介面來進行查詢 比較方便
UserDao內容如下
package com.hp.dao;
import org.apache.ibatis.annotations.Select;
import com.hp.bean.User;
public interface UserDao {
@Select("select * from user where id = #{id}")
public User getOne(int id);
}
然後在mybatis-conf.xml 檔案中把下面內容註釋掉
接下來在TextDemo測試中測試介面
效果圖為