MYBATIS的使用(一【xml方式实现】)
来源:互联网 发布:网络诈骗报警平台 编辑:程序博客网 时间:2024/05/29 17:12
自MYBATIS从BATIS奔向Google后,一直在蜕化,大方向实现分xml和注解Annation。接下来分别为初学者推出xml和注解Annation两种Demo。
一、第一种实现方式:xml
1、Demo结构。
2、配置文件
(1)数据源:jdbc.properties
#******************** 数据库连接属性*****************************driver=com.mysql.jdbc.Driverusername=rootpassword=123url=jdbc\:mysql\://localhost\:3306/solrdb?characterEncoding\=utf8
(2)mybatis-config.xml配置
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <properties resource="jdbc.properties"/><environments default="development"><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /></dataSource></environment></environments><mappers><mapper resource="com/wrs/mapxml/sysUser.xml" /></mappers></configuration>(3)日志文件:log4j.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><!--屏幕打印信息 --><appender name="Console" class="org.apache.log4j.ConsoleAppender"><param name="Encoding" value="utf-8" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern"value="[%-5p][%d{yyyy-MM-dd HH:mm:ss.SSS}][%15t]:[%m][%-17C{8}:%4L]%n" /></layout><!--限制输出级别 --><filter class="org.apache.log4j.varia.LevelRangeFilter"><param name="LevelMax" value="ERROR" /><param name="LevelMin" value="INFO" /></filter></appender><!-- 普通日志 --> <appender name="log" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="./log/log.log" /><param name="BufferSize" value="8192"/> <param name="DatePattern" value="'_'yyyy-MM-dd'.log'" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern"value="[%-5p][%d{yyyy-MM-dd HH:mm:ss.SSS}][%10t]:[%m][%-17C{8}:%4L]%n" /></layout><filter class="org.apache.log4j.varia.LevelRangeFilter"><param name="LevelMax" value="ERROR" /><param name="LevelMin" value="INFO" /></filter></appender><!-- 异常日志 --><appender name="exception" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="./log/exception.log" /><param name="BufferSize" value="8192"/> <param name="DatePattern" value="'_'yyyy-MM-dd'.log'" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%-5p][%d{yyyy-MM-dd HH:mm:ss.SSS}][%10t]:[%m][%-17C{8}:%4L]%n" /></layout><filter class="org.apache.log4j.varia.LevelRangeFilter"><param name="LevelMax" value="ERROR" /><param name="LevelMin" value="ERROR" /></filter></appender><!-- SQL日志 --><appender name="sql" class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="./log/sql.log" /><param name="BufferSize" value="8192"/> <param name="DatePattern" value="'_'yyyy-MM-dd'.log'" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="[%-5p][%d{yyyy-MM-dd HH:mm:ss.SSS}][%10t]:[%m][%-17C{8}:%4L]%n" /></layout><filter class="org.apache.log4j.varia.LevelRangeFilter"><param name="LevelMax" value="ERROR" /><param name="LevelMin" value="INFO" /></filter></appender><logger name="log" additivity="false"> <appender-ref ref="Console" /><appender-ref ref="log" /></logger><!-- additivity="true" 表示logger=sql的日志会打印到root中 --><logger name="sql" additivity="true"> <appender-ref ref="Console" /><appender-ref ref="sql" /></logger><!-- additivity="true" 表示logger=sql的日志会打印到root中 --><logger name="exception" additivity="true"> <appender-ref ref="Console" /><appender-ref ref="exception" /></logger><!-- root元素定义根日志输出器 --><root><appender-ref ref="log" /><appender-ref ref="exception" /><appender-ref ref="sql" /></root></log4j:configuration>
(4)sysUser.xml配置
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.wrs.model.SysUserMapper"> <!-- 新增用户 --> <insert id="insertSysUser" parameterType="com.wrs.model.SysUser"> insert into sys_user(id,user_name) values (#{id},#{user_name})</insert> <!-- 删除用户 --> <delete id="deleteSysUser"> delete from sys_user where id = #{id} </delete> <!-- 修改用户 --> <update id="updateSysUser" parameterType="com.wrs.model.SysUser"> update sys_user set user_name = #{user_name} where id = #{id} </update> <!-- 查询单个用户 --><select id="selectSysUser" resultType="com.wrs.model.SysUser">select * from sys_user where id = #{id}</select><!-- 查询所有用户 --><select id="selectSysUserList" resultType="com.wrs.model.SysUser"> <![CDATA[select * from sys_user order by id asc]]></select></mapper>
(1)LogHelper.java
package com.wrs.common;import java.net.URL;import org.apache.log4j.Logger;import org.apache.log4j.PropertyConfigurator;/** *@function项目日志 *@authorWRS *@remark项目日志打印:常用日志、sql日志 exception异常日志 *@version1.0 *@sincejdk1.8 *@datetime2015年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;/** *@functionsession工厂 *@author{作者} *@remark{描述} *@version{版本} *@sincejdk1.6 *@datetime2015年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{版本} *@sincejdk1.6 *@datetime2015年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<SysUser> 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用户数据访问接口实现 *@authorWRS *@remark增、删、改、查 *@version1.0 *@sincejdk1.6 *@datetime2015年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<SysUser> 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{版本} *@sincejdk1.6 *@datetime2015年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<SysUser> 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{版本} *@sincejdk1.6 *@datetime2015年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<SysUser> 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{版本} *@sincejdk1.6 *@datetime2015年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<SysUser> 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技术开发和支持,与其相关技术交流。
如需请加微信号:
0 0
- MYBATIS的使用(一【xml方式实现】)
- MYBATIS的使用(二【Annation方式实现】)
- 使用mybatis的逆向工程(xml方式)创建java代码
- Spring-Boot Mybatis使用xml方式的配置
- MyBatis的XML配置文件(一)
- Spring Boot 中使用MyBatis Mapper方式(xml)
- MyBatis的使用(一)
- MyBatis之使用XML配置SQL映射(一)
- 三(一)mybatis接口映射sql 使用xml
- Mybatis的使用(mapper接口方式)
- mybatis的简单运用(xml配置方式)
- mybatis的使用《一》
- MyBatis XML方式的基本用法
- Quartz定时器的使用之XML配置方式(一)
- mybatis 的 resultMap使用方式
- spring,springmvc,mybatis基本整合(一)--xml文件配置方式(1)
- spring,springmvc,mybatis基本整合(一)--xml文件配置方式(2)
- spring,springmvc,mybatis基本整合(一)--xml文件配置方式(1)
- Java开发中的23种设计模式详解(转)
- easyUI datagrid导出excel(所见即所得)
- unity3d 切换场景过度动画
- 使用pillow进行图像处理
- 新知识目录
- MYBATIS的使用(一【xml方式实现】)
- 计算机视觉领域的一些牛人博客,研究机构等的网站链接
- 王亟亟的Python学习之路(五)-dictionary,set,函数,函数参数
- 【Android】getwidth和getmeasuredwidth的区别以及两者的使用场景
- 部署已有项目到GIT@OSC
- response 设置编码格式
- ios UITextView的placeHolder的设置
- [LeetCode] Two Sum
- JavaScript基础学习(四)---Boolean(布尔)对象