基于上一篇的例子:Mybatis示例
基础环境同上回:jar,config.xml,mapper.xml
不同之处:
省略掉statement,根据约定可以定位出SQL语句。
接口,接口中的方法必须遵循以下约定:
- 1.方法名和mapper. xml文件中标签的id值相同
- 2.方法的输入参数和mapper.xm1文件中标签的 parameterType类型一致
- 3.方法的返回值和mapper.xml文件中标签的resultType类型一致
除了以上约定,要实现接口中的方法 和 Mapper.xml中SQL标签一一对应,还需要以下1点:
namespace的值,就是接口的全类名(接口 – mapper.xml 一一对应)
匹配的过程:
- 根据接口名 找到 mapper.xml文件 (根据的是namespace=接口全类名)
- 根据接口方法名 找到mapper.xml文件中的SQl标签 (方法名=SQL标签ID值)
- 以上两点保证:当我们调用接口中的方法时,程序能自动定位到某一mapper.xml文件中的SQl标签
习惯:SQL映射文件 mapper.xml和接口放在同一个包 (注意修改conf.xml中)
项目结构:
userMapper.xml
第五行代码,修改成 接口的全类名,这样,接口就跟xml文件关联起来了。
userMapper.java
接口名 就是xml的文件名。
方法名 就是userMapper.xml 中的id。
Test.java
package Test;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
import mapper.UserMapper;
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 user.User;
public class Test {
public static void main(String[] args) throws IOException {
String resource = "config.xml";
//加载mybatis的配置文件(它也加载关联的映射文件)
Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
UserMapper usermapper = session.getMapper(UserMapper.class);
//根据学号查找
// User user = usermapper.selectUserById(7);
// System.out.println(user);
//添加user
/*
User user = new User(6, "曹丕", "cp", "许昌");
usermapper.addUser(user);
System.out.println(user.toString());
*/
//修改用户信息
/*
User user = new User();
user.setName("曹植");
user.setPassword("cz");
user.setAddress("null");
user.setId(6);
usermapper.updateUserById(user);
*/
//查找全部
List<User> queryAll = usermapper.queryAll();
System.out.println(queryAll);
session.commit();
}
}
注意commit
。
还有不要忘记修改config.xml中 mapper的路径。