Mybatis 增删查改的用法

模糊查询的两种方法

  • 编写sql语句
  • 方法读取sql,参数,返回值类型,转成jdbc代码

Mybatis操作-使用注意事项

  • parameterType和resultType
    parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。
    resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。如果有多条数据,则分别进行映射,并把对象放到容器List中
    注意
    parameterType一般可以省略不写
    resultType是必须要写的
  • selectOne和selectList
    selectOne查询一条记录,如果使用selectOne查询多条记录则抛出异常:
    org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:70)
    selectList可以查询一条或多条记录 (推荐)。也可以用来查询一条记录,不会抛出异常。
  • Mybatis默认不会提交事务,所以如果是增删改,则需要手动提交事务,调用session

插入数据操作

编写sql执行映射文件中的sql

   public void test02SaveUser(){
    
    
        SqlSession sqlSession = MySessionUtils.getSession();
        User user = new User();
        user.setUsername("yy");
        user.setSex(1);
        user.setBirthday(new Date());
        user.setAddress("河北");
        sqlSession.insert("com.wxx.bean.User.saveUser",user);
        sqlSession.commit();
        sqlSession.close();
    }

编写映射文件

 <insert id="saveUser" parameterType="com.wxx.bean.User">
        insert into `user` values(null,#{username},#{birthday},#{sex},#{address})
 </insert>

修改用户信息操作

  • 在映射文件中编写sql
  • 设置参数与返回值
  • 调用方法
public void test02UpdateUser(){
    
    
        SqlSession sqlSession = MySessionUtils.getSession();
        User user = new User();
        user.setId(10);
        user.setUsername("张三");
        user.setBirthday(new Date());
        user.setSex(1);
        user.setAddress("上海市");
        sqlSession.update("com.wxx.bean.User.updateUser",user);
        sqlSession.commit();
        sqlSession.close();
    }

配置文件

<update id="updateUser" parameterType="com.wxx.bean.User">
     update `user` set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
 </update>

Mybatis操作-小结

  • 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。
    解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库链接。
  • Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。
    解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。
  • 向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。
    解决:Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型。
  • 对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。
    解决:Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。
  • 其中需要配置的文件包括:
    1:maven pom.xml
    2:核心配置文件Config.xml
    3:映射文件 Mapper.xml
    4:MySessionUtil
    在开发过程中,需要不断地在xml中写标签与sql,调session,调用完成之后,关闭session。

猜你喜欢

转载自blog.csdn.net/xinxin_____/article/details/108799068