热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MYBATIS的使用(一【xml方式实现】)

自MYBATIS从BATIS奔向Google后,一直在蜕化,大方向实现分xml和注解Annation。接下来分别为初学者推出xml和注解Annation

自MYBATIS从BATIS奔向Google后,一直在蜕化,大方向实现分xml和注解Annation。接下来分别为初学者推出xml和注解Annation两种Demo。

一、第一种实现方式:xml

1、Demo结构。


2、配置文件

(1)数据源:jdbc.properties

#******************** 数据库连接属性 *****************************
driver=com.mysql.jdbc.Driver
username=root
password=123
url=jdbc\:mysql\://localhost\:3306/solrdb?characterEncoding\=utf8


(2)mybatis-config.xml配置


PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
(3)日志文件:log4j.xml




(4)sysUser.xml配置


PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
insert into sys_user(id,user_name) values (#{id},#{user_name})delete from sys_user where id = #{id}update sys_user set user_name = #{user_name} where id = #{id}






3、实现代码

(1)LogHelper.java


package com.wrs.common;import java.net.URL;import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;/*** @function 项目日志 * @author WRS* @remark 项目日志打印:常用日志、sql日志 exception异常日志* @version 1.0* @since jdk1.8* @datetime 2015年7月9日 下午4:10:39* @copyright {xx.com (c) 2018}*/
public class LogHelper {static{URL configFileResource = LogHelper.class.getResource("/log4j.xml");PropertyConfigurator.configure(configFileResource);}/*** 普通日志打印* @return 返回普通日志对象*/public static Logger printLog() {return Logger.getLogger("log");}/*** sql日志打印* @return 返回sql日志对象*/public static Logger printSql() {return Logger.getLogger("sql");}/*** 异常日志打印* @return 返回exception日志对象*/public static Logger printException() {return Logger.getLogger("exception");}public static void main(String[] args) {}}


SessionFactory.java


package com.wrs.common;import java.io.IOException;
import java.io.InputStream;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;/*** @function session工厂 * @author {作者}* @remark {描述}* @version {版本}* @since jdk1.6* @datetime 2015年7月28日 上午9:57:58* @copyright {wrs.com (c) 2013}*/
public class SessionFactory {/*** 获取session对象* @return*/public static SqlSession getSession(){LogHelper.printLog().info("SessionFactory getSession()");SqlSession session = null;try {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);if(sqlSessionFactory!=null){session = sqlSessionFactory.openSession();}else{LogHelper.printLog().info("Session对象创建失败,请检查mybatis-config.xml配置是否正确!");}} catch (IOException e) {e.printStackTrace();}return session;}/*** 释放没用的资源* @param sqlSession*/public static void close(SqlSession session) {LogHelper.printLog().info("SessionFactory close(SqlSession session)");if (session!=null) {//释放session资源session.clearCache();session.close();session = null;}LogHelper.printLog().info("释放资源完毕!");}public static void main(String[] args) {getSession();}
}


数据分层》

SysUserDao.java

package com.wrs.dao;import java.util.List;import com.wrs.model.SysUser;/*** @function {功能} * @author {作者}* @remark {描述}* @version {版本}* @since jdk1.6* @datetime 2015年7月30日 下午1:53:32* @copyright {wrs.com (c) 2013}*/
public interface SysUserDao{/*** 增加用户* @param sysUser* @return*/public int insert(SysUser sysUser);/*** 删除用户* @param id* @return*/public int delete(Integer id);/*** 更新用户* @param sysUser* @return*/public int update(SysUser sysUser);/*** 查询用户* @param id* @return*/public SysUser query(Integer id);/*** 获取所有用户信息* @return*/public List querySysUserList();
}





SysUserDaoImpl.java

package com.wrs.dao.impl;import java.util.List;import org.apache.ibatis.session.SqlSession;import com.wrs.common.SessionFactory;
import com.wrs.dao.SysUserDao;
import com.wrs.model.SysUser;/*** @function 用户数据访问接口实现 * @author WRS* @remark 增、删、改、查* @version 1.0* @since jdk1.6* @datetime 2015年7月30日 下午1:58:09* @copyright {wrs.com (c) 2013}*/
public class SysUserDaoImpl implements SysUserDao {private SqlSession session = null;public SysUserDaoImpl() {if (session==null) {session = SessionFactory.getSession();}}/** 新增用户* 【注意:增加时应该将session的自动提交改为手动提交,不执行改操作会导致无法增加数据】* (non-Javadoc)* @see com.wrs.dao.SysUserDao#insert(com.wrs.model.SysUser)*/@Overridepublic int insert(SysUser sysUser) {session.commit(false);//1、先取消自动提交int insertRslt = session.insert("com.wrs.model.SysUserMapper.insertSysUser", sysUser);//2、执行增加操作session.commit();//3、手动提交return insertRslt;}/** 删除用户* 【注意:删除时应该将session的自动提交改为手动提交,不执行改操作会导致无法删除数据】* (non-Javadoc)* @see com.wrs.dao.SysUserDao#delete(java.lang.Integer)*/@Overridepublic int delete(Integer Id) {session.commit(false);int deleteRslt = session.delete("com.wrs.model.SysUserMapper.deleteSysUser", Id);session.commit();System.out.println("删除用户结果:"+(deleteRslt==1?"成功":"失败")+"!");return deleteRslt;}/** 修改用户* 【注意:修改时应该将session的自动提交改为手动提交,不执行改操作会导致无法修改数据】* (non-Javadoc)* @see com.wrs.dao.SysUserDao#update(com.wrs.model.SysUser)*/@Overridepublic int update(SysUser sysUser) {session.commit(false);int deleteRslt = session.update("com.wrs.model.SysUserMapper.updateSysUser", sysUser);session.commit();return deleteRslt;}/** 查询单个用户* (non-Javadoc)* @see com.wrs.dao.SysUserDao#query(java.lang.Integer)*/@Overridepublic SysUser query(Integer Id) {return session.selectOne("com.wrs.model.SysUserMapper.selectSysUser", Id);}/** 查询所有用户* (non-Javadoc)* @see com.wrs.dao.SysUserDao#querySysUserList()*/@Overridepublic List querySysUserList() {return session.selectList("com.wrs.model.SysUserMapper.selectSysUserList");}}





业务逻辑层》

SysUserService.java

package com.wrs.service;import java.util.List;import com.wrs.model.SysUser;/*** @function {功能} * @author {作者}* @remark {描述}* @version {版本}* @since jdk1.6* @datetime 2015年7月30日 下午1:53:32* @copyright {wrs.com (c) 2013}*/
public interface SysUserService {/*** 增加用户* @param sysUser* @return*/public int insert(SysUser sysUser);/*** 删除用户* @param id* @return*/public int delete(Integer id);/*** 更新用户* @param sysUser* @return*/public int update(SysUser sysUser);/*** 查询用户* @param id* @return*/public SysUser query(Integer id);/*** 获取所有用户信息* @return*/public List querySysUserList();
}



SysUserServiceImpl.java

package com.wrs.service.impl;import java.util.List;import com.wrs.dao.SysUserDao;
import com.wrs.dao.impl.SysUserDaoImpl;
import com.wrs.model.SysUser;
import com.wrs.service.SysUserService;/*** @function {功能} * @author {作者}* @remark {描述}* @version {版本}* @since jdk1.6* @datetime 2015年7月30日 下午1:58:09* @copyright {wrs.com (c) 2013}*/
public class SysUserServiceImpl implements SysUserService {private SysUserDao sysUserDao = null;public SysUserServiceImpl() {if (sysUserDao==null) {sysUserDao = new SysUserDaoImpl();}}@Overridepublic int insert(SysUser sysUser) {return sysUserDao.insert(sysUser);}@Overridepublic int delete(Integer Id) {return sysUserDao.delete(Id);}@Overridepublic int update(SysUser sysUser) {return sysUserDao.update(sysUser);}@Overridepublic SysUser query(Integer Id) {return sysUserDao.query(Id);}@Overridepublic List querySysUserList() {return sysUserDao.querySysUserList();}}


调用Action》

SysUserAction.java

package com.wrs.action;import java.util.List;import com.wrs.common.LogHelper;
import com.wrs.model.SysUser;
import com.wrs.service.SysUserService;
import com.wrs.service.impl.SysUserServiceImpl;/*** @function {功能} * @author {作者}* @remark {描述}* @version {版本}* @since jdk1.6* @datetime 2015年7月30日 上午11:47:31* @copyright {wrs.com (c) 2013}*/
public class SysUserAction {private SysUserService sysUserService = null;public SysUserAction() {if(sysUserService==null){sysUserService = new SysUserServiceImpl();}}/*** 新增用户* 【注意:增加时应该将session的自动提交改为手动提交,不执行改操作会导致无法增加数据】*/public void insert(){LogHelper.printLog().info("SysUserAction insert()");SysUser sysUser = new SysUser(3,"生哥");//如数据库支持Id主键自增,则Id可以为null值,如"mysql数据库"int insertRslt = sysUserService.insert(sysUser);LogHelper.printLog().info("新增用户结果:"+(insertRslt==1?"成功":"失败")+"!");}/*** 删除用户* 【注意:删除时应该将session的自动提交改为手动提交,不执行改操作会导致无法删除数据】*/public void delete(){LogHelper.printLog().info("SysUserAction delete()");int deleteRslt = sysUserService.delete(3);LogHelper.printLog().info("删除用户结果:"+(deleteRslt==1?"成功":"失败")+"!");}/*** 修改用户* 【注意:删除时应该将session的自动提交改为手动提交,不执行改操作会导致无法修改数据】*/public void update(){LogHelper.printLog().info("SysUserAction delete()");SysUser sysUser = new SysUser(3,"生哥别名");int deleteRslt = sysUserService.update(sysUser);LogHelper.printLog().info("修改用户结果:"+(deleteRslt==1?"成功":"失败")+"!");}/*** 查询用户*/public void query(){LogHelper.printLog().info("SysUserAction query()");SysUser sysUser = sysUserService.query(1);LogHelper.printLog().info("用户ID:"+sysUser.getId()+",用户名:"+sysUser.getUser_name());}/*** 查询所有用户数量*/public void querySysUserList(){LogHelper.printLog().info("SysUserAction query()");List sysUserList = sysUserService.querySysUserList();LogHelper.printLog().info("用户数量:"+sysUserList.size());}public static void main(String[] args) {SysUserAction sysUserAction = new SysUserAction();//sysUserAction.insert();//sysUserAction.delete();//sysUserAction.update();//sysUserAction.query();sysUserAction.querySysUserList();}
}






友情提示:本人提供相关IT技术开发和支持,与其相关技术交流。

如需请加微信号:






推荐阅读
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • Lucene 全文检索技术入门
    一、搜索引擎的历史萌芽:Archie、Gopher起步:Robot(网络机器人)的出现与spider(网络爬虫)发展:excite、galax ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • 部署solr建立nutch索引
    2019独角兽企业重金招聘Python工程师标准接着上篇nutch1.4的部署应用,我们来部署一下solr,solr是对lucene进行了封装的企 ... [详细]
  • camel_使用Camel在来自不同来源的Solr中索引数据
    camelApacheSolr是建立在Lucene之上的“流行的,快速的开源企业搜索平台”。为了进行搜索(并查找结果),通常需要从不同的源(例如内容管理 ... [详细]
  • 一:什么是solrSolr是apache下的一个开源项目,使用Java基于lucene开发的全文搜索服务器;Lucene是一个开放源代 ... [详细]
  • 首先我们在taotao-search-interface工程中新建一个SearchService接口,并在接口中添加一个方法,如下图所示。接着,我们到taotao-search-s ... [详细]
  • solr倒排索引(转载)
    原文地址:http:blog.csdn.netchichengitarticledetails9235157http:blog.csdn.netnjpjsoftdevarticle ... [详细]
author-avatar
海淀区碎漓
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有