Mybatis+JDBC 数据增删改查及优化

这次是重头戏更新,是第二次Mybatis+JDBC,涉及到增删改查,操作user表的CRUD,这次实验课上的感觉就是*的课确实有东西,值得一上 ,足足的干货。表白*第二天。

简单的罗列一下知识点,
userMapper.xml中是要填写一些有关数据库的代码,例如select* from user。 parameterType=“int” 填写返回值类型。
在userMapper.xml中,数据库代码不传id,是因为ID是自增长的,传不进去。
在userMapper.xml中,不可以复制粘贴代码,因为编码的原因,会造成代码编写错误,例如:同为b字母,但是自己电脑编写出来编码为gb2312,复制代码中b编码为utf-8,这样就会出现错误,而且肉眼无法观察!
当执行CRUD操作时,insert、delete、update都执行正常,但是,select查不到
数据,原因是实体类中没有提供无参构造函数。没有提供任何构造函数时,系统会提供一个默认的无参构造函数,但是,当提供了有参构造函数时,系统就不会提供,需要显式的定义。
session.commit();//运行发现数据库没有添加进去数据,原因是默认是手动添加的,需要修改。
或改变为true
util 功能, selectOne就是查询一次
封装 User类
User user = new User();
user.setName(“sas”);
user.setAge(90);
int u = session.insert(s,user);
system.out.println(u);
对User类型的封装,输出1表示insert成功,-1表示不成功
还有在dao中调用,dao意为对象访问

Mybatis+JDBC 数据增删改查及优化
下面为通过main防范来进行测试的例子

public class text {
 public static void main(String[] args) throws IOException{
  String resource="conf.xml";
  //加载mybatis的配置文件(他也加载关联的映射文件)
  Reader reader= Resources.getResourceAsReader(resource);
  //构建sqlSession的工厂
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
  //创建能执行映射文件中sql的sqlSession
  SqlSession session = sessionFactory.openSession();
//  String statement = "com.sxau.rjxy.Mybatis.userMapper"+".getUser";
//  List<user>list = session.selectList(statement);
//  System.out.println(list);
  
  //增加 user
//  String statement1 = "com.sxau.rjxy.Mybatis.userMapper"+".insertUser";
//  int re= session.insert(statement1,new user("22","eeds","212"));
//  session.commit();//运行发现数据库没有添加进去数据,原因是默认是手动添加的,需要修改。
//  System.out.println(re);
//  session.close();
//  
  //删除user
//  String statement2 = "com.sxau.rjxy.Mybatis.userMapper"+".deleteUser";
//  int re1= session.delete(statement2,11);
//  session.commit();//运行发现数据库没有添加进去数据,原因是默认是手动添加的,需要修改。
//  System.out.println(re1);
//  session.close();
  
  //更新 user
  String statement3 = "com.sxau.rjxy.Mybatis.userMapper"+".updateUser";
  int re2= session.update(statement3,new user("12","lala","23"));
  session.commit();//运行发现数据库没有添加进去数据,原因是默认是手动添加的,需要修改。
  System.out.println(re2);
 
  //查找user
  String statement4 = "com.sxau.rjxy.Mybatis.userMapper"+".selectUser";
  int re3= session.selectOne(statement4,"12");
  session.commit();//运行发现数据库没有添加进去数据,原因是默认是手动添加的,需要修改。
  System.out.println(re3);
 }
}

其实相对比来说main方法直接了当但是比较麻烦,所以添加了test方法来测试,也就是需要引入一个Jutil包即测试包来进行测试,测试代码如下。

public class utilText {
 @Test
 public void selectUser() throws IOException {
   String resource="conf.xml";
  //加载mybatis的配置文件(他也加载关联的映射文件)
Reader reader= Resources.getResourceAsReader(resource);
  //构建sqlSession的工厂
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
  //创建能执行映射文件中sql的sqlSession
 SqlSession session = sessionFactory.openSession();
  
  
  //查找user
    String statement4 = "com.sxau.rjxy.Mybatis.userMapper"+".selectUser";
  int re3= session.selectOne(statement4,"12");
  session.commit();//运行发现数据库没有添加进去数据,原因是默认是手动添加的,需要修改。
  System.out.println(re3);
 }
 
 @Test
 public void insertUser() throws IOException {
   String resource="conf.xml";
  //加载mybatis的配置文件(他也加载关联的映射文件)
Reader reader= Resources.getResourceAsReader(resource);
  //构建sqlSession的工厂
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
  //创建能执行映射文件中sql的sqlSession
 SqlSession session = sessionFactory.openSession();
  

//增加 user
  String statement1 = "com.sxau.rjxy.Mybatis.userMapper"+".insertUser";
  int re= session.insert(statement1,new user("79","egdsds","663"));
  session.commit();
  System.out.println(re);
 }
 
 @Test
 public void deleteUser() throws IOException {
   String resource="conf.xml";
  //加载mybatis的配置文件(他也加载关联的映射文件)
Reader reader= Resources.getResourceAsReader(resource);
  //构建sqlSession的工厂
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
  //创建能执行映射文件中sql的sqlSession
 SqlSession session = sessionFactory.openSession();

  //删除user
  String statement2 = "com.sxau.rjxy.Mybatis.userMapper"+".deleteUser";
  int re1= session.delete(statement2,13);
  session.commit();
  System.out.println(re1);
  session.close();
 }
 
 @Test
 public void updateUser() throws IOException {
   String resource="conf.xml";
  //加载mybatis的配置文件(他也加载关联的映射文件)
Reader reader= Resources.getResourceAsReader(resource);
  //构建sqlSession的工厂
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
  //创建能执行映射文件中sql的sqlSession
 SqlSession session = sessionFactory.openSession();
  
  //更新 user
  String statement3 = "com.sxau.rjxy.Mybatis.userMapper"+".updateUser";
  user user = new user("22","lasds","45");
  int re2= session.update(statement3,user);
  System.out.println(re2);
   
 }
}

然后发现其实测试代码的前四行都为一样,就是不停地复制粘贴,所以需要进行优化,将前四行代码封装成一个包,进行函数的调用,这样看起来就会简单明了,而且有利于之后的代码修改等,这告诉我们一定要学会代码的封装(3行相同代码出现三次以上,进行封装)
下面是封装好的代码效果
test代码

public class utilText {
 @Test
 public void selectUser() throws IOException {
查找user
  SqlSession session = MybatisUtil.getSqlSession();
  String statement4 = "com.sxau.rjxy.Mybatis.userMapper"+".selectUser";
  int re3= session.selectOne(statement4,"12");
  session.commit();//运行发现数据库没有添加进去数据,原因是默认是手动添加的,需要修改。
  System.out.println(re3);
 }
 
 @Test
 public void insertUser() throws IOException {
//增加 user
  SqlSession session = MybatisUtil.getSqlSession();
  String statement1 = "com.sxau.rjxy.Mybatis.userMapper"+".insertUser";
  int re= session.insert(statement1,new user("79","egdsds","663"));
  session.commit();
  System.out.println(re);
 }
 
 @Test
 public void deleteUser() throws IOException {
//删除user
  SqlSession session = MybatisUtil.getSqlSession();
  String statement2 = "com.sxau.rjxy.Mybatis.userMapper"+".deleteUser";
  int re1= session.delete(statement2,13);
  session.commit();
  System.out.println(re1);
  session.close();
 }
 
 @Test
 public void updateUser() throws IOException {
//更新 user
  SqlSession session = MybatisUtil.getSqlSession();
  String statement3 = "com.sxau.rjxy.Mybatis.userMapper"+".updateUser";
  user user = new user("22","lasds","45");
  int re2= session.update(statement3,user);
  System.out.println(re2);
   
 }
}

MybatisUtil代码

public class MybatisUtil {
 public static SqlSession getSqlSession() throws IOException {
  
 
 String resource="conf.xml";
 //加载mybatis的配置文件(他也加载关联的映射文件)
 Reader reader= Resources.getResourceAsReader(resource);
 //构建sqlSession的工厂
 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
 //创建能执行映射文件中sql的sqlSession
 SqlSession sqlSession = sessionFactory.openSession();
 return sqlSession;
 }
}

就是这么多,代码其实挺简单的,在第一次实验的基础上进行添加修改就可以,继续加油!!!抽时间还是要学习一下Ajax的,毕竟省市联动实验因为打比赛还没来得及做。