mybatis入“坑”第一步 (2)

③使用的Map集合类型对数据的SQL语句进行操作,只需要将Map集合中key对应SQL语句中的需要注入的值。也就是说SQL注入的值可以不和实体类中属性一致。同时,使用Map集合而不是User类作为传入类型进行传输时不需要将User类中所有数据传输。

四、编写工具类

mybatis的使用需要以SqlSessionFactory为核心,使用SqlSessionFactory去生产SqlSession对象。创建一个工具类去生产SqlSession对象,以后使用mybatis便可以从该工具类中拿出SqlSession。

public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; // 调用该类执行该静态模块中的代码,获取SqlSessionFactory static { try { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } // 通过该方法可以生产SqlSession对象 public SqlSession getSqlSession(){ SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession; } }

五、测试

接着我们就可以利用mybatisUtils工具类生产的SqlSession对象去调用openSession执行对应的Mapper接口,就可以调用接口中的方法去执行对应的SQL语句。

具体测试类如下:

// 查询所有用户信息 @Test public void queryUserTest(){ MybatisUtils mybatisUtils = new MybatisUtils(); // 调用mybatisUtils中的getSqlSession方法获取SqlSession对象 SqlSession sqlSession = mybatisUtils.getSqlSession(); // 执行SqlSession中的getMapper方法,以便后来来执行对应的Mapper接口方法 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 执行接口方法,配置完成mybatis会调用的对应的SQL语句执行 List<User> user = mapper.getUser(); sqlSession.close(); System.out.println(user); } // 使用Map数据类型对数据进行更新 @Test public void updateUserMap(){ MybatisUtils mybatisUtils = new MybatisUtils(); SqlSession sqlSession = mybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); Map<String,Object> map = new HashMap<>(); map.put("username","王三"); // map.put("password","2334op"); map.put("uid","3"); int count = mapper.updateUserMap(map); /*增删改的数据库操作需要提交事务*/ sqlSession.commit(); sqlSession.close(); System.out.println(count); }

注意:① 增删改的SQL语句操作都需要进行事务的提交。
          ② SqlSession使用完后要记得关闭。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfgfj.html