mybatis简单介绍(进阶篇-基于接口实现CURD)

基于第一篇文章现实CURD,但是在实际的企业开发中,mybatis的CURD普遍是基于接口发的,

为了适应主流,现在把之前入门篇的方法改为接口模式,本文简单易懂,希望对初学者有所帮助!

这是第一篇文章的链接www.jianshu.com/p/d92b756c37a0

首先介绍一下流程,大致流程是这样的

1.启动程序——》加载配置文件,初始化SqlSession并获得session——》    2.由session调用API的方法执行sql语句并获得结果集——》

3.将结果集映射成对象——》4.返回给程序。

首先,我们需要修改的地方有

1.修改userMapper.xml,增加一条 

当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句

conf.xml文件(不改变)

mybatis简单介绍(进阶篇-基于接口实现CURD)_第1张图片

userMapper.xml文件

mybatis简单介绍(进阶篇-基于接口实现CURD)_第2张图片

2.增加Iuser接口

mybatis简单介绍(进阶篇-基于接口实现CURD)_第3张图片

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


mybatis简单介绍(进阶篇-基于接口实现CURD)_第4张图片


mybatis简单介绍(进阶篇-基于接口实现CURD)_第5张图片


mybatis简单介绍(进阶篇-基于接口实现CURD)_第6张图片

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

你可能感兴趣的:(mybatis简单介绍(进阶篇-基于接口实现CURD))