热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

MyBatis中SqlSession实现增删改查案例

这篇文章主要介绍了MyBatis中SqlSession实现增删改查案例,非常不错,具有参考借鉴价值,需要的朋友可以参考下

前言

     开博客这是第一次写系列文章,从内心上讲是有点担心自己写不好,写不全,毕竟是作为java/mybatis学习的过程想把学习的路线和遇到的问题都总结下来,也让知识点在脑海里能形成一个体系。

开发环境

    idea2016、mybatis3、SQLServer2012

pom.xml、mybatis.xml、log4j.properties

   先贴上pom.xml是因为他直接和搭建开发环境和测试环境有关系,mybatis.xml则是连接数据库,log4j.properties在学习阶段配置上有助于我们观察SQL的执行情况。

1、pom.xml


 
  org.mybatis
  mybatis
  3.4.2
 
 
  com.microsoft.sqlserver
  sqljdbc4
  4.0
 
 
  commons-dbcp
  commons-dbcp
  1.4
 
 
  junit
  junit
  4.10
 
 
  log4j
  log4j
  1.2.17
 
 

2、mybatis.xml

<&#63;xml version="1.0" encoding="UTF-8"&#63;>



 
 
  
  
  
 
 
  
   
   
    
    
    
    
   
  
 


 
  
  
 

3、log4j.properties

### Log4j配置 ###
### 与Spring结合需要在web.xml中指定此文件位置,并添加监听器 ###
#定义log4j的输出级别和输出目的地(目的地可以自定义名称,和后面的对应)
#[ level ] , appenderName1 , appenderName2
log4j.rootLogger=DEBUG,console,file

#-----------------------------------#
#1 定义日志输出目的地为控制台
log4j.appender.cOnsole= org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
####可以灵活地指定日志输出格式,下面一行是指定具体的格式 ###
#%c: 输出日志信息所属的类目,通常就是所在类的全名
#%m: 输出代码中指定的消息,产生的日志具体信息
#%n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.COnversionPattern=[%c]-%m%n

#-----------------------------------#
#2 文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.file = org.apache.log4j.RollingFileAppender
#日志文件输出目录
log4j.appender.file.File=log/tibet.log
#定义文件最大大小
log4j.appender.file.MaxFileSize=10mb
###输出日志信息###
#最低级别
log4j.appender.file.Threshold=ERROR
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.COnversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n

#-----------------------------------#
#3 druid
log4j.logger.druid.sql=INFO
log4j.logger.druid.sql.DataSource=info
log4j.logger.druid.sql.COnnection=info
log4j.logger.druid.sql.Statement=info
log4j.logger.druid.sql.ResultSet=info

#4 mybatis 显示SQL语句部分
log4j.logger.org.mybatis=DEBUG
#log4j.logger.cn.tibet.cas.dao=DEBUG
#log4j.logger.org.mybatis.common.jdbc.SimpleDataSource=DEBUG#
#log4j.logger.org.mybatis.common.jdbc.ScriptRunner=DEBUG#
#log4j.logger.org.mybatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG#
#log4j.logger.java.sql.COnnection=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

配置mapper.xml

   mapper.xml在mybatis.xml是专职处理sql的一个环节,各种映射和实现都在这里处理

<&#63;xml version="1.0" encoding="UTF-8"&#63;>


 
 
 
 
 
 
 
  insert into t_userinfo (name,address) values(#{name},#{address})
 
 
 
  update t_userinfo set name=#{name},address=#{address} where id=#{id}
 
 
 
  delete t_userinfo where id=#{id}
 

建立单元测试

1、准备工作,我建立的是控制台程序,所以在使用sqlsession前先创建sqlsessionfactory。当然,还要加载log4j.properties

SqlSessionFactory sqlSessiOnFactory=null;
 @Before
 public void BeforeClass(){
  try {
   InputStream is=Resources.getResourceAsStream("log4j.properties");
   PropertyConfigurator.configure(is);
   Reader reader = Resources.getResourceAsReader("mybatis.xml");
   sqlSessiOnFactory= new SqlSessionFactoryBuilder().build(reader);
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

2、queryUsers

@Test
  public void queryUsers() throws Exception {
    //线程不安全类型,放在方法体内
    SqlSession sqlSession=null;
    try {
      sqlSession=sqlSessionFactory.openSession();
      List list = sqlSession.selectList("com.autohome.mapper.User.queryUsers");
      System.out.println("size:"+list.size());
    } catch (Exception e) {
      e.printStackTrace();
    }finally {
      sqlSession.close();
    }
  }

3、queryUserById

@Test
  public void queryUserById() {
    SqlSession sqlSession=null;
    try{
      sqlSession=sqlSessionFactory.openSession();
      User user = sqlSession.selectOne("com.autohome.mapper.User.queryUserById",2);
      System.out.println("id:"+user.getId()+",name:"+user.getName()+","+user.getAddress());
    }catch(Exception e){
      e.printStackTrace();
    }finally {
      sqlSession.close();
    }
  }

4、insertUser

@Test
  public void insertUser(){
    SqlSession sqlSession=null;
    try{
      sqlSession=sqlSessionFactory.openSession();
      User user =new User();
      user.setName("kobe");
      user.setAddress("usa");
      int result = sqlSession.insert("com.autohome.mapper.User.insertUsers",user);
      sqlSession.commit();
      if(result>0){
        System.out.println("insert success....");
      }else{
        System.out.println("insert error....");
      }
    }catch(Exception e){
      e.printStackTrace();
    }finally {
      sqlSession.close();
    }
  }

5、updateUser

@Test
 public void updateUser(){
   SqlSession sqlSession=null;
   try{
     sqlSession=sqlSessionFactory.openSession();
     User user =new User();
     user.setId(36);
     user.setName("kobe");
     user.setAddress("usa");
     int result = sqlSession.update("com.autohome.mapper.User.updateUsers",user);
     sqlSession.commit();
     if(result>0){
       System.out.println("update success....");
     }else{
       System.out.println("update error....");
     }
   }catch(Exception e){
     e.printStackTrace();
   }finally {
     sqlSession.close();
   }
 }

6、deleteUser

@Test
  public void deleteUser(){
    SqlSession sqlSession=null;
    try{
      sqlSession=sqlSessionFactory.openSession();
      int result = sqlSession.delete("com.autohome.mapper.User.deleteUsers",49);
      sqlSession.commit();
      if(result>0){
        System.out.println("delete success....");
      }else{
        System.out.println("delete error....");
      }
    }catch(Exception e){
      e.printStackTrace();
    }finally {
      sqlSession.close();
    }
  }

总结

      添加、修改、删除的操作要调用sqlsession.commit(),不然数据无法入库的,我刚开始就忘记了这个。

以上所述是小编给大家介绍的MyBatis中SqlSession实现增删改查案例,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!


推荐阅读
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文将详细介绍如何安装和使用 CactiEZ 的中文版本,帮助那些对英文界面不太熟悉的用户轻松掌握这一强大的网络监控工具。 ... [详细]
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • 本文探讨了如何利用SqlDependency执行复杂的SQL查询,并确保在多线程环境下的安全性与效率。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 在使用Maven进行项目构建时,由于依赖库的下载速度慢常常让人感到沮丧,这直接影响了开发效率和学习热情。幸运的是,阿里云提供了一个快速的国内镜像服务,能够显著提升Maven项目的构建速度。 ... [详细]
  • TortoiseSVN与VisualSVN Server的安装及基本操作指南
    本文详细介绍了如何安装VisualSVN Server以及TortoiseSVN客户端,并提供了基本的操作步骤,包括配置仓库、用户管理及权限设置等关键环节。 ... [详细]
  • Servlet过滤器入门:实现与配置
    本文介绍如何在Java Web应用中实现和配置Servlet过滤器,通过实现`javax.servlet.Filter`接口来创建过滤器,并详细说明其在web.xml文件中的配置方法。 ... [详细]
  • 俗话说得好,“工欲善其事,必先利其器”。这句话不仅强调了工具的重要性,也提醒我们在任何项目开始前,准备合适的工具至关重要。本文将介绍几款C语言编程中常用的工具,帮助初学者更好地选择适合自己学习和工作的编程环境。 ... [详细]
  • 如何解决Windows 7桌面图标显示异常的问题
    本文提供了多种有效的方法来解决Windows 7系统中桌面图标显示为未知文件图标的问题,包括更换个性化主题、清理图标缓存等。 ... [详细]
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • 本文介绍了Java语言开发的远程教学系统,包括源代码、MySQL数据库配置以及相关文档,适用于计算机专业的毕业设计。系统支持远程调试,采用B/S架构,适合现代教育需求。 ... [详细]
  • 本文探讨了如何利用 Hibernate 进行高效的批量更新和删除操作,包括直接使用 Hibernate API 的方法及其局限性,以及如何通过 JDBC 或存储过程实现更优的性能。 ... [详细]
  • 本文总结了MySQL的一些实用技巧,包括查询版本、修改字段属性、添加自动增长字段、备份与恢复数据库等操作,并提供了一些常见的SQL语句示例。 ... [详细]
author-avatar
Icy芸土_644
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有