特点:
1、 Mapper接口方法名和mapper.xml中定义sql的id值相同
2、 Mapper接口方法接收的参数类型和mapper.xml中定义的sql 的parameterType的类型相同
3、 Mapper接口方法的返回值类型和mapper.xml中定义的sql的resultType的类型相同
4、接口里的方法最好不要有修饰符
接口开发特点1:namespace的值=接口全路径
<mapper namespace="cn.tedu.dao.UserMapper">
在mapper中
<?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">
<!--
接口开发特点1:namespace的值=接口全路径
-->
<mapper namespace="cn.tedu.dao.UserMapper">
<select id="findAll"
resultType="User">
select * from user
</select>
<!-- 根据id查询记录
id:唯一标志
resultType:将查出来的结果封装给哪个对象
#{id}:动态获取值,id是属性名
-->
<select id="findOne"
resultType="User">
select * from user where id=#{id}
</select>
<!-- 查询总记录数 -->
<select id="count"
resultType="int">
select count(*) from user
</select>
<!-- 新增一条记录
#{?}来动态获取值,?写实体的属性
-->
<insert id="save">
insert into user values
(null,#{nameaaa},#{addr},#{age})
</insert>
<!-- 修改指定记录
#{?}来动态获取值,?写实体的属性
-->
<update id="gengxin">
update user set
name=#{name},
addr=#{addr},
age=#{age}
where id=#{id}
</update>
<!-- 根据id删除一条记录 -->
<delete id="delete">
delete from user where id=#{id}
</delete>
</mapper>
在接口类中:
package cn.tedu.dao;
import java.util.List;
import com.tedu.pojo.User;
public interface UserMapper {
List<User> findAll();
User findOne(Integer id);
int count();
void save(User user);
void gengxin(User user);
void shanchu(Integer id);
}
测试接口类
package com.tedu.test;
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.tedu.pojo.User;
import cn.tedu.dao.UserMapper;
/**
*
* 这个类用来测试接口的方法
*
*/
public class InterfaceTest {
SqlSessionFactory ssf;
@Before
public void init() {
try {
InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
ssf=new SqlSessionFactoryBuilder().build(in);
} catch (Exception e) {
// TODO: handle exception
}
}
//查询所有数据
public void findAll() {
SqlSession session = ssf.openSession();
//调用接口中的方法,读取接口中的文件
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> list = mapper.findAll();
//遍历
for(User user:list) {
System.out.println(user);
}
session.close();
}
/**
User findOne(Integer id);
int count();
void save(User user);
void gengxin(User user);
void shanchu(Integer id);
*/
@Test
public void findOne() {
SqlSession session = ssf.openSession();
//调用接口中的方法,读取接口中的文件
UserMapper mapper = session.getMapper(UserMapper.class);
User user=mapper.findOne(2);
System.out.println(user);
session.close();
}
public void count() {
SqlSession session = ssf.openSession();
//调用接口中的方法,读取接口中的文件
UserMapper mapper = session.getMapper(UserMapper.class);
int count = mapper.count();
System.out.println(count);
session.close();
}
// @Test
public void gengxin() {
SqlSession session = ssf.openSession();
//调用接口中的方法,读取接口中的文件
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User();
user.setName("熊大");
user.setAddr("American");
user.setAge(20);
user.setId(2);
mapper.gengxin(user);
session.commit();
session.close();
}
//@Test
public void save() {
SqlSession session = ssf.openSession();
//调用接口中的方法,读取接口中的文件
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User();
user.setName("rows");
user.setAddr("American");
user.setAge(20);
mapper.save(user);
session.commit();
session.close();
}
//@Test
public void shanchu() {
SqlSession session = ssf.openSession();
//调用接口中的方法,读取接口中的文件
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.shanchu(1);
session.commit();
session.close();
}
}