更新時(shí)間:2022-06-01 10:14:54 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1887次
MyBatis是一個(gè) Java 持久性框架,它使用 XML 描述符或注釋將對(duì)象與存儲(chǔ)過程或 SQL 語句耦合在一起。與 ORM 框架不同,MyBatis 不會(huì)將 Java 對(duì)象映射到數(shù)據(jù)庫表,而是將 Java 方法映射到 SQL 語句。MyBatis 允許使用所有數(shù)據(jù)庫功能,如存儲(chǔ)過程、視圖、任何復(fù)雜性的查詢和供應(yīng)商專有功能。
使用 MyBatis 的好處是:
開箱即用的表/查詢緩存
減少大部分 JDBC 樣板文件
提高生產(chǎn)力
SQL 代碼與 Java 類的分離
可以在不使用 XML 的情況下在純 Java 中配置 MyBatis。在下面的示例中,我們將找出表中的書籍?dāng)?shù)量。
包 com.zetcode.map;
導(dǎo)入 org.apache.ibatis.annotations.Select;
公共接口 MyMapper {
@Select("SELECT COUNT(*) FROM MyBooks")
public int getNumberOfBooks();
}
MyMapper包含計(jì)算表中行數(shù)的 SQL 代碼MyBooks。
包 com.zetcode.jconfig;
導(dǎo)入 java.util.Properties;
導(dǎo)入 javax.sql.DataSource;
導(dǎo)入 org.apache.ibatis.datasource.DataSourceFactory;
導(dǎo)入 org.apache.ibatis.datasource.pooled.PooledDataSource;
公共類 MyDataSourceFactory 實(shí)現(xiàn) DataSourceFactory {
private Properties prop;
@Override
公共數(shù)據(jù)源 getDataSource() {
PooledDataSource ds = new PooledDataSource();
ds.setDriver(prop.getProperty("driver"));
ds.setUrl(prop.getProperty("url"));
ds.setUsername(prop.getProperty("user"));
ds.setPassword(prop.getProperty("密碼"));
返回 ds;
}
@Override
public void setProperties(Properties prprts) {
prop = prprts;
}
}
MyDataSourceFactoryPooledDataSource 從給定的屬性創(chuàng)建一個(gè)。PooledDataSource是一個(gè)簡單的、同步的、線程安全的數(shù)據(jù)庫連接池。
包 com.zetcode.client;
導(dǎo)入 com.zetcode.jconfig.MyDataSourceFactory;
導(dǎo)入 com.zetcode.jconfig.MyMapper;
導(dǎo)入 java.io.IOException;
導(dǎo)入 java.util.Properties;
導(dǎo)入 javax.sql.DataSource;
導(dǎo)入 org.apache.ibatis.mapping.Environment;
導(dǎo)入 org.apache.ibatis.session.Configuration;
導(dǎo)入 org.apache.ibatis.session.SqlSession;
導(dǎo)入 org.apache.ibatis.session.SqlSessionFactory;
導(dǎo)入 org.apache.ibatis.session.SqlSessionFactoryBuilder;
導(dǎo)入 org.apache.ibatis.transaction.TransactionFactory;
導(dǎo)入 org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
公共類 MyBatisJavaConfClient {
私有靜態(tài) SqlSessionFactory sesFact = null;
public static void main(String[] args) throws IOException {
Properties prop = new Properties();
prop.setProperty("驅(qū)動(dòng)程序", "com.mysql.jdbc.Driver");
prop.setProperty("url", "jdbc:mysql://localhost:3306/testdb");
prop.setProperty("user", "testuser");
prop.setProperty("密碼", "test623");
MyDataSourceFactory mdsf = new MyDataSourceFactory();
mdsf.setProperties(prop);
數(shù)據(jù)源 ds = mdsf.getDataSource();
TransactionFactory trFact = new JdbcTransactionFactory();
環(huán)境 environment = new Environment("development", trFact, ds);
config.addMapper(MyMapper.class);
sesFact = new SqlSessionFactoryBuilder().build(config);
嘗試(SqlSession session = sesFact.openSession()) {
int numOfBooks = session.selectOne("getNumberOfBooks");
System.out.format("有 %d 本書", numOfBooks);
}
}
}
在MyBatisJavaConfClient,我們使用 Java 代碼配置 MyBatis,構(gòu)建 SQL 會(huì)話,并執(zhí)行g(shù)etNumberOfBooks()方法。
屬性 prop = new Properties();
prop.setProperty("驅(qū)動(dòng)程序", "com.mysql.jdbc.Driver");
prop.setProperty("url", "jdbc:mysql://localhost:3306/testdb");
prop.setProperty("user", "testuser");
prop.setProperty("密碼", "test623");
這里我們?cè)O(shè)置數(shù)據(jù)庫屬性。
MyDataSourceFactory mdsf = new MyDataSourceFactory();
mdsf.setProperties(prop);
數(shù)據(jù)源 ds = mdsf.getDataSource();
我們通過獲取數(shù)據(jù)源MyDataSourceFactory。
TransactionFactory trFact = new JdbcTransactionFactory();
環(huán)境 environment = new Environment("development", trFact, ds);
配置配置 = 新配置(環(huán)境);
config.addMapper(MyMapper.class);
此代碼替換 XML 配置。我們使用JdbcTransactionFactory、 Environment和Configuration類。
sesFact = new SqlSessionFactoryBuilder().build(config);
類的實(shí)例Configuration被傳遞給SqlSessionFactoryBuilder's build()方法。
以上就是關(guān)于“MyBatis入門教程”的介紹,大家如果想了解更多相關(guān)知識(shí),不妨來關(guān)注一下動(dòng)力節(jié)點(diǎn)的Mybatis視頻教程,里面的課程內(nèi)容細(xì)致全面,通俗易懂,適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對(duì)大家能夠有所幫助哦。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743