MyBatis的单表操作

MyBatis的单表查询

一.
首先,先对model层的User进行序列化操作

public class User implements Serializable {

二.
新建Service层,在里面新建UserServiceImpl类对数据库进行增删改查操作


public class UserServiceImpl {

}

在这里插入图片描述
下面我们分步进行讲解
1.

 private SqlSessionFactory ssf;

新建一个SqlSessionFactory的的对象ssf
2.

 InputStream is=this.getClass().getClassLoader().getResourceAsStream("mybatis.cfg.xml");
       

InputStream is是指新建一个输入流is,将后续的内容转换成流的形式

this.getClass()指的是运行时类

getClassLoader()指的是类加载器

连起来就是返回src这个目录

getResourceAsStream()

指的是将哪一个文件名转换成输入流

后面跟的mybatis.xml就是你要转换的内容
3.

 ssf=new SqlSessionFactoryBuilder().build(is);

SqlSessionFactoryBuilder()

是Sql会话工厂生成器的意思

build(is)

是将前面的is传入到build()函数中

连在一起的意思是将前面的输入流is中的内容转换成SqlSession工厂

此处的SqlSessionFactory是我们进行接下来增删改查的工具
4.

 SqlSession session=ssf.openSession();
 ...
 session.close();

这句话连起来是要生成SQL语句的执行对象,sqlsession是会话的含义,是SqlSessionFactory的对象,打开之后在后面进行增删改查的操作,最后调用close(),进行关闭session
5.

 List<User> list=session.selectList("com.ryh.test.mapper.UserMapper.selectByExample");

使用List集合来查询数据库表中的元素
调用session的selectList的功能,按照selectByExample来进行查询,位置在,com下面的UserMapper
6.

list.forEach(c-> System.out.println(c.getUsername()));

调用foreach来打印输出User表中的姓名
在这里插入图片描述
在这里插入图片描述
这样查询功能就实现了

由此我们继续进行增删改操作

public class UserServiceImpl {
    private SqlSessionFactory ssf;
    public UserServiceImpl(){
        InputStream is=this.getClass().getClassLoader().getResourceAsStream("mybatis.cfg.xml");
        ssf=new SqlSessionFactoryBuilder().build(is);
    }

    @Test
    public void queryAll(){
        SqlSession session=ssf.openSession();
        List<User> list=session.selectList("com.ryh.test.mapper.UserMapper.selectByExample");
        list.forEach(c-> System.out.println(c.getUsername()));
        session.close();
    }

    @Test
    public void add(){
        SqlSession session=ssf.openSession();
        try{
            User user=new User();
            user.setUsername("丁磊");
            user.setPassword("1234");
            int r=session.insert("com.ryh.test.mapper.UserMapper.insert",user);
            session.commit();
        }catch (Exception e){
            session.rollback();
            e.printStackTrace();
        }
        session.close();
    }
    @Test
    public void del(){
        SqlSession session=ssf.openSession();
        try{

            int r=session.delete("com.ryh.test.mapper.UserMapper.deleteByPrimaryKey",53);
            session.commit();
        }catch (Exception e){
            session.rollback();
            e.printStackTrace();
        }
        session.close();
    }

    @Test
    public void update(){
        SqlSession session=ssf.openSession();
        try{
            User user=new User();
            user.setId(54);
            user.setUsername("王兴");
            user.setPassword("1289");
            int r=session.update("com.ryh.test.mapper.UserMapper.updateByPrimaryKey",user);
            session.commit();
        }catch (Exception e){
            session.rollback();
            e.printStackTrace();
        }
        session.close();
    }
    
    
}

在这里插入图片描述
注意:在增加一行数据的时候,需要增加表中所需不为空的每一个字段,所以不能只增加主键,而在删除和修改的时候,是对已知表中的数据进行操作,这样只需要动主键中的元素就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值