一、接口编程
1、概述:接口与动态文件进行动态绑定,即通过(配置文件的命名空间+id)与(接口全类名+方法进行绑定)
2、具体实现(创建表结构、实体类、mybatis配置文件,见学习笔记一)
- 新建接口UserMapper,并添加selectUser()方法
public interface UserMapper {
public User selectUser(String userName);
}
- 创建UserMapper.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="com.chensr.until.mybatis.UserMapper">
<!-- resultType为返回类型 -->
<select id="selectUser" resultType="com.chensr.until.mybatis.User">
select id,user_name as userName, age from user where user_name = #{userName}
</select>
</mapper>
注:这里的命名空间namespace值为UserMapper接口的全类名,select标签的id为UserMapper接口的selectUser()方法
- 测试类
@org.junit.Test
public void selectUserByInterface() throws Exception{
String resource = "mybatis-config.xml";
//加载配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);
//获取sessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession,openSession无参时,需要手动提交事务;如果为参数为true,则自动提交事务
SqlSession session = sqlSessionFactory.openSession();
try{
//接口与userMapper.xm绑定,并为UserMapper创建一个代理类
UserMapper mapper = session.getMapper(UserMapper.class);
User user =mapper.selectUser("陈大爷");
System.out.println(user.toString());
}finally {
session.close();
}
}
注:UserMapper mapper = session.getMapper(UserMapper.class);就是用于接口与mapper.xml绑定
- 测试结果
二、基于注解(无需mapper.xml)
- 通过在接口上写注解(sql),实现对数据库的操作
- 具体实现(在接口UserMapper里添加saveUser方法)
public interface UserMapper {
public User selectUser(String userName);
@Insert("INSERT INTO user (user_name,age) VALUE (#{userName},#{age})")
public void saveUser(User user);
}
注:使用Insert注解,sql写法与配置文件写法一致
- 测试类
@org.junit.Test
public void saveUserByInterface() throws Exception{
String resource = "mybatis-config.xml";
//加载配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);
//获取sessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession,openSession无参时,需要手动提交事务;如果为参数为true,则自动提交事务
SqlSession session = sqlSessionFactory.openSession();
try{
User user = new User();
user.setUserName("李大爷");
user.setAge(30);
//接口与userMapper.xm绑定,并为UserMapper创建一个代理类
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.saveUser(user);
//提交事务
session.commit();
}finally {
session.close();
}
}
- 测试结果