Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。
Mapper接口开发需要遵循以下规范:
(1)、 Mapper.xml文件中的namespace与mapper接口的类路径相同。
(2)、 Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
(3)、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
(4)、 Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
将UserMapper.xml放在config下mapper目录下
SELECT LAST_INSERT_ID()
INSERT INTO `user`
(username,birthday,sex,address) VALUES
(#{name},#{birthday},#{sex},#{address})
UPDATE `user` SET
username = #{name},
address = #{address},
birthday = #{birthday} WHERE id = #{id}
delete from user where
id=#{id}
/**
* @文件名称: UserMapper.java
* @描述: TODO
* @作者: 一叶扁舟(skiff)
* @时间:2018年1月9日 下午3:18:05
* @版本:V1.0
*/
package com.skiff.www.mapper;
import java.util.List;
import com.skiff.www.domain.User;
/**
* @类功能说明:
* @作者: 一叶扁舟 (skiff)
* @创建时间:2018年1月9日 下午3:18:05
* @版本:V1.0
*/
public interface UserMapper {
//遵循四个原则
//接口 方法名 == User.xml 中 id 名
//返回值类型 与 Mapper.xml文件中返回值类型要一致
//方法的入参类型 与Mapper.xml中入参的类型要一致
//命名空间 绑定此接口
public User findUserById(Integer id);
public List queryUserByUsername1(String name);
}
/**
* @文件名称: UserMapperTest.java
* @描述: TODO
* @作者: 一叶扁舟(skiff)
* @时间:2018年1月9日 下午6:14:34
* @版本:V1.0
*/
package test.com.skiff.www.testUser;
import java.io.InputStream;
import java.util.List;
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 org.junit.Before;
import org.junit.Test;
import com.skiff.www.domain.User;
import com.skiff.www.mapper.OrderMapper;
import com.skiff.www.mapper.UserMapper;
/**
* @类功能说明:
* @作者: 一叶扁舟 (skiff)
* @创建时间:2018年1月9日 下午6:14:34
* @版本:V1.0
*/
public class UserMapperTest {
private SqlSessionFactory sqlSessionFactory;
@Before
public void init() throws Exception {
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
this.sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testQueryName(){
SqlSession session = this.sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
List users = mapper.queryUserByUsername1("无悔");
for (User user2 : users) {
System.out.println(user2);
}
}
}