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();
}
}
注意:在增加一行数据的时候,需要增加表中所需不为空的每一个字段,所以不能只增加主键,而在删除和修改的时候,是对已知表中的数据进行操作,这样只需要动主键中的元素就可以了