基于第一篇文章现实CURD,但是在实际的企业开发中,mybatis的CURD普遍是基于接口发的,
为了适应主流,现在把之前入门篇的方法改为接口模式,本文简单易懂,希望对初学者有所帮助!
这是第一篇文章的链接www.jianshu.com/p/d92b756c37a0
首先介绍一下流程,大致流程是这样的
1.启动程序——》加载配置文件,初始化SqlSession并获得session——》 2.由session调用API的方法执行sql语句并获得结果集——》
3.将结果集映射成对象——》4.返回给程序。
首先,我们需要修改的地方有
1.修改userMapper.xml,增加一条<mapper namespace =”com.cn.mybatis.dao.IUser”>
当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句
conf.xml文件(不改变)

userMapper.xml文件

2.增加Iuser接口

package com.cn.mybatis.dao;import java.util.List;import com.cn.mybatis.domain.User;
/** * IUser为操作接口,函数名和mybatis的xml配置文件中的操作id名对应 * @author Administrator * */
public interface IUser {public User getUserID(int id);public ListListUser();
public void updateUser(User user);
public void addUser(User user);
public void deleteUser(int id);
}
接下来,我们来做一个测试类Test2



package com.cn.mybatis.test;import java.io.Reader;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 com.cn.mybatis.dao.IUser;import com.cn.mybatis.domain.User;public class Test2 {private static SqlSessionFactory sqlSessionFactory;private static Reader reader;private static SqlSession session;static {try {reader = Resources.getResourceAsReader("conf.xml");sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (Exception e) {e.printStackTrace();}}//-----------------------------------------根据ID查询-----------------------------------------------------------public void getUserID(int userID) {session = sqlSessionFactory.openSession(); try {IUser iuser = session.getMapper(IUser.class); //session与IUser关联User user = iuser.getUserID(userID); //将查询结果映射到实体类if (user != null) {System.out.println(user);}} finally {session.close();}}//-----------------------------------------根查询所有--------------------------------------------------------------------public void ListUser(){session =sqlSessionFactory.openSession();try{IUser iuser =session.getMapper(IUser.class);Listlist =(List) iuser.ListUser();
if(list!=null){
System.out.println(list);
}
}finally{
session.close();
}
}
//-------------------------------------------插入一条数据-------------------------------------------------------------------------
public void addUser(){
User user= new User();
user.setName("省院设计");
user.setAge(38);
session =sqlSessionFactory.openSession();
try{
IUser iuser =session.getMapper(IUser.class);
iuser.addUser(user);
session.commit();
System.out.println("新增用户ID:" + user);
}finally{
session.close();
}
}
//-------------------------------------------修改一条数据-------------------------------------------------------------------------
public void updateUser(int id){
session =sqlSessionFactory.openSession();
try{
IUser iuser =session.getMapper(IUser.class);
User user =iuser.getUserID(id);
if(user!=null){
user.setName("广东省");
user.setAge(110);
iuser.updateUser(user);
System.out.println(user);
}
session.commit();
}finally{
session.close();
}
}
//-------------------------------------------删除一条数据-------------------------------------------------------------------------
public void deleteUser(int id){
session =sqlSessionFactory.openSession();
try{
IUser iuser =session.getMapper(IUser.class);
User user =iuser.getUserID(id);
if(user!=null){
iuser.deleteUser(id);
System.out.println("删除"+user.getId()+"成功");
}
session.commit();
}finally{
System.out.println("id不存在");
session.close();
}
}
public static void main(String[] args) {
new Test2().getUserID(35);
//new Test2().ListUser();
//new Test2().addUser();
//new Test2().updateUser(35);
new Test2().deleteUser(38);
}
}
注意事项:1.注意接口中的方法名要与xml的ID名一致,否则会报找不到对应的ID。2.除了查询外,其余都要commit();
Mapped Statements collection does not contain value for com.cn.mybatis.dao.IUser.getUserID
网友评论