Mapper操作数据库,才是MyBatis 3的主流方式。
Mapper的主要优势在于: Mapper直接可以充当DAO组件。
▲ 使用Mapper操作数据库的开发步骤:
(1)定义Mapper接口,所有的数据操作都定义成该接口中方法
(2)为Mapper接口提供XML Mapper文件。
MyBatis将根据XML Mapper文件为Mapper接口生成实现类,所以建议:
1. XML Mapper文件的文件名与Mapper接口同名。
2. XML Mapper文件的namespace属性应该等于 Mapper接口的全限定类名。
3. XML Mapper文件与Mapper接口的源代码放在相同的包结构下。
4. XML Mapper文件中SQL语句的id必须与Mapper接口中方法名对应。
否则会报:Invalid bound statement
Mapper组件 = Mapper接口 + XML Mapper
(3)调用SqlSession的getMapper()方法来获取Mapper对象。
——MyBatis在底层负责提供Mapper的实现类
(4)使用Mapper对象充当DAO组件来操作数据库。
更改数据库表字段名由new_content为news_content
映射文件和接口位于同一目录下,且文件名相同后缀不同。
接口中的方法名即为映射文件中的sql语句id名。
新增映射接口
package org.itcheng.app.dao;
import java.util.List;
import org.itcheng.app.domain.News;
// Mapper组件相当于DAO组件
public interface NewsMapper
{
int saveNews(News news);
int updateNews(News news);
void deleteNews(Integer id);
List<News> findNews(Integer id);
}
更改映射文件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属性值相当于该mapper的唯一标识 -->
<mapper namespace="org.itcheng.app.dao.NewsMapper">
<!-- SQL的id需要与Mapper接口的方法名相同 -->
<insert