MyBatis 是支持定製化 SQL、存儲過程以及高級映射的優秀的持久層框架。
MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。
MyBatis 可以對配置和原生Map使用簡單的 XML 或註解,
將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。
Mybatis入門配置
<?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>
<!-- 引入 config 連接配置文件 需要注意的是 mybatis 引入 包的時候 不能加 /號 -->
<properties resource="config.properties"></properties>
<!-- environments 配置連接數據庫的環境 , development 表示開發者環境 -->
<environments default="development">
<environment id="development">
<!-- 將事務交給JDBC 來管理 Connection 調用 commit 和 rollback 方法 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 設置數據源 連接四要素 (連接池) -->
<dataSource type="POOLED">
<property name="driver" value="${driverClass}"/>
<property name="url" value="${url}"/>
<property name="username" value="${userAccount}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- resource 是 配置文件 全包名 映射 -->
<mapper resource="cn/zj/lesson01/xmlway/xml_emp.xml"/>
<mapper resource="cn/zj/lesson01/interfc/Interface_dept.xml"/>
<!-- class 是 接口或者類 全類名 映射 -->
<mapper class="cn.zj.lesson01.interfc.note.InterfcMybatis2" />
</mappers>
</configuration>
1.通過配置文件映射Sql(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">
<!-- 命名空間 ,在路徑上加一層上級路徑,避免id重複 在類中調用是 namespace.id -->
<mapper namespace="xmls">
<!-- id 是 config 配置文件 接入 mapper配置文件的標識符
resultType是返回的類型 ,可以是類型全路徑,
也可以是 xxx 類的
-->
<select id="empselect" resultType="map">
select * from emp
</select>
</mapper>
2通過接口直接映射Sql(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">
<!-- 如果要通過接口加配置文件 映射 那麼 namespace 就要填接口的全路徑 -->
<mapper namespace="cn.zj.lesson01.interfc.InterfcMybatis">
<!-- id 就要填入 該接口的方法名 resultType填入 該方法 泛型的類型 -->
<select id="selectDept" resultType="map">
select * from dept
</select>
</mapper>
3通過接口直接映射Sql(註解)
package cn.zj.lesson01.interfc.note;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Select;
public interface InterfcMybatis2 {
@Select("select * from emp where ename like #{name}")
public List<Map> selectEmp(@Param(value = "name") String name);
}
需要注意的 #{ } 取參數 ,如果不加 param註解 設置參數
那麼 默認就是param1 ,累加
如#{param1 }
還有可以通過 #{下標的方法} 調取參數
#{ } 和 ${ } 的區別
#{ } 是sql 防注入 ?
${}是直接字符串拼接。
用那個不言而喻。