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 防注入 ?
${}是直接字符串拼接。
用那个不言而喻。