Mybatis學習二 (介面註解)
1.概述
執行SQL的方式:
第一種:
用 SqlSession
例項來直接執行在User.xml
檔案中對映的 SQL 語句
session.selectOne("com.yiibai.mybatis.models.UserMapper.getUserByID", 1)
第二種:
使用合理描述引數和SQL語句返回值的介面(比如:IUser.class
),
這樣現在就可以不使用類似User.xml
配置檔案,至此更簡單,程式碼更安全,
不容易發生的字串文字和轉換的錯誤
2.使用介面
第一步:建立一個介面:IUser,並在其中宣告對應的操作方法
import org.apache.ibatis.annotations.Select;
import com.yiibai.mybatis.models.User;
public interface IUser {
@Select("select * from user where id= #{id}")
public User getUserByID(int id);
}
注:程式碼有一個方法名 getUserByID
必須與 User.xml
裡面配置的
select
的 id
對應(<select id="getUserByID">
User.xml
。
第二步:建立對應對映介面 SQL 語句
配置 MyBatis 所需的資料連線檔案,這裡建立一個檔案: src/config/Configure.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>
<typeAlias alias="User" type="com.yiibai.mybatis.models.User" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/testdb" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- // power by http://www.yiibai.com 註釋掉咯...
<mapper resource="com/yiibai/mybatis/models/User.xml" />-->
</mappers>
</configuration>
建立一個User.java
類檔案
public class User {
private String name;
private String dept;
private String phone;
private String website; } 測試介面對映 import java.io.Reader;
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 com.yiibai.mybatis.dao.IUser;
import com.yiibai.mybatis.models.User; public class Main {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
static {
try { //讀取xml檔案
reader = Resources.getResourceAsReader("config/Configure.xml"); //構造器獲取工廠物件
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //將介面對映新增到工廠裡
sqlSessionFactory.getConfiguration().addMapper(IUser.class);
} catch (Exception e) {
e.printStackTrace();
}
} public static SqlSessionFactory getSession() {
return sqlSessionFactory;
} public static void main(String[] args) { //開啟一個連線
SqlSession session = sqlSessionFactory.openSession();
try { //將SQL查詢新增進去
IUser iuser = session.getMapper(IUser.class); //查詢
User user = iuser.getUserByID(1);
System.out.println("名字:"+user.getName());
System.out.println("所屬部門:"+user.getDept());
System.out.println("主頁:"+user.getWebsite());
} finally { //關閉連線
session.close();
}
}
} 學習來源:https://www.yiibai.com/mybatis/interface_comment.html#article-start