MyBatis实例

来源:互联网 发布:2017年全球数据总量 编辑:程序博客网 时间:2024/06/05 16:36

上篇博客中我讲解了如何配置MyBatis的开发环境,这里我就直接拿一个例子来说明如何在实际的开发中使用MyBatis。

项目目录结构

在MyEclipse中新建一个Java web项目,并导入MyBatis的jar包,同时在src目录下新建一些包,以区分不同的功能,目录结构如下图所示。


我们来一一讲解一下这些文件的具体内容以及功能。

(1)log4j.properties

该文件的内容如下所示:

log4j.rootLogger = DEBUG, stdoutlog4j.logger.org.mybatis = DEBUGlog4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern =%5p %d %C\: %m%n
这个主要是为了记录程序运行过程中的配置信息,使用的日志框架是log4j,所以你要在工程中导入log4j的jar包。这个配置的效果要等到整个项目运行起来的时候才能观察到。如下所示:

我们可以看到,它记录了一些非常重要的执行过程,比如SQL语句和一些中间结果。

(2)jdbc.properties

该文件主要是一些数据源的配置信息,它可以在mybatis-config.xml中进行加载,从而引用其中的一些变量,比如数据库驱动、URL、数据库用户名、密码等。

driver = com.mysql.jdbc.Driverurl = jdbc:mysql://localhost:3306/mybatis_test?characterEncoding=UTF-8username = rootpassword =

(3)com.cao.util

这个包下就定义了一个类:SqlSessionFactoryUtil,它的作用主要是以单例模式创建SqlSessionFactory,同时返回SqlSession,代码如下:

package com.cao.util;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;public class SqlSessionFactoryUtil {private static SqlSessionFactory sqlSessionFactory = null;private static final Class CLASS_LOCK = SqlSessionFactoryUtil.class;/* * 私有化构造函数 */private SqlSessionFactoryUtil(){}/* * 构建SqlSessionFactory */public static SqlSessionFactory initSqlSessionFactory(){String resource = "mybatis-config.xml";InputStream is = null;try{is = Resources.getResourceAsStream(resource);}catch(IOException e){e.printStackTrace();}synchronized(CLASS_LOCK){if(sqlSessionFactory == null){sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);}}return sqlSessionFactory;}public static SqlSession openSqlSession(){if(sqlSessionFactory == null){initSqlSessionFactory();}return sqlSessionFactory.openSession();}}

(4)com.cao.pojo

这个包下也就只有一个类:Role,其实它就是一个Java bean。

package com.cao.pojo;public class Role {private Long id;private String roleName;private String note;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getRoleName() {return roleName;}public void setRoleName(String roleName) {this.roleName = roleName;}public String getNote() {return note;}public void setNote(String note) {this.note = note;}}

(5)com.cao.mapper

这个包下面有两个文件,充当了映射器的作用,当然也可以不要RoleMapper接口,好像说MyBatis在版本几之前来着都是没有这个接口映射文件的。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  <mapper namespace="com.cao.mapper.RoleMapper"><select id="getRole" parameterType="long" resultType="Role">select id, role_name as roleName, note from role where id = #{id}</select><insert id="insertRole" parameterType="Role">insert into role(role_name,note) values(#{roleName},#{note})</insert><delete id="deleteRole" parameterType="long">delete from role where id = #{id}</delete></mapper>

package com.cao.mapper;import com.cao.pojo.Role;public interface RoleMapper {public Role getRole(Long id);public int insertRole(Role role);public int deleteRole(Long id);}

(6)com.cao.main

当然,这里面就是测试的主函数入口了。

package com.cao.main;import org.apache.ibatis.session.SqlSession;import com.cao.mapper.RoleMapper;import com.cao.pojo.Role;import com.cao.util.SqlSessionFactoryUtil;public class RoleMain {public static void main(String[] args) {SqlSession sqlSession = null;try{sqlSession = SqlSessionFactoryUtil.openSqlSession();RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);Role role = new Role();role.setRoleName("zhangxiang");role.setNote("this is zhangxiang");roleMapper.insertRole(role);roleMapper.deleteRole(2L);sqlSession.commit();}catch(Exception e){System.out.println(e.getMessage());sqlSession.rollback();}finally{if(sqlSession != null){sqlSession.close();}}}}

完整代码请在这里下载http://download.csdn.net/detail/chyang1999/9880976

原创粉丝点击