文档章节

MyBatis配置

开源俱乐部
 开源俱乐部
发布于 2014/06/21 12:27
字数 1442
阅读 491
收藏 0

一、Mybatis配置

(1)准备环境

        本文的环境是使用Mybatis操作数据库,因此需要做如下准备工作:

        1)安装MySQL数据库

        2)创建表

        3)配置mybatis和mysql的jar包(可以使用添加路径或Maven来管理两种方式,本文不做赘述)

        本例中使用的Maven来管理的jar包,“pom.xml”文件内容如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.uni2uni.myapp</groupId>
 <artifactId>myapp</artifactId>
 <packaging>war</packaging>
 <version>0.0.1-SNAPSHOT</version>
 <name>myapp Maven Webapp</name>
 <url>http://maven.apache.org</url>
 <dependencies>
  <dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>3.2.7</version>
  </dependency>
  <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.31</version>
  </dependency>

  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>3.8.1</version>
   <scope>test</scope>
  </dependency>
 </dependencies>
 <build>
  <finalName>myapp</finalName>
 </build>
</project>

(2)配置数据库实体

        数据库实体在maven项目中位置为:/src/main/java/中

        本例的位置是:/src/main/java/com.uni2uni.Model/User.java

        内容如下所示:

package com.uni2uni.Model;
public class User {
 private int Id;
 private String Username;
 private String Password;
 public int getId() {
  return Id;
 }
 public void setId(int id) {
  Id = id;
 }
 public String getUsername() {
  return Username;
 }
 public void setUsername(String username) {
  Username = username;
 }
 public String getPassword() {
  return Password;
 }
 public void setPassword(String password) {
  Password = password;
 }
}

(3)配置MyBatis配置文件

        Mybatis的配置文件分3类:SqlMapConfig.xml、config.propertes、实体名.xml

        SqlMapConfig.xml

        一般只有一个“SqlMapConfig.xml”文件,名称可以自定义,它用于存放mybatis的常量和设置、指定“config.propertes”的位置、指定“实体.xml”的位置。

        config.propertes

        用于存放“SqlMapConfig.xml”文件中设定的动态变量信息,名字可以自定义,可以是一个文件,也可以是多个文件。它的存放格式是每行一个变量,用“变量名=变量值”的格式存放。

        实体名.xml:

        这个用于配置实体的Schemal、自定义数据库返回值的类型及对数据库操作的sql脚本,多数情况下在项目中为多个文件。本例中该文件为“user.xml”。

        在Maven项目中,Mybatis的配置文件一般放在/src/main/resources,如下图所示:

        本例中“SqlMapConfig.xml”中内容如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.1//EN"  
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
 <properties resource="config.properties" />
 <settings>
  <setting name="cacheEnabled" value="true" />
  <setting name="lazyLoadingEnabled" value="true" />
  <setting name="multipleResultSetsEnabled" value="true" />
  <setting name="useColumnLabel" value="true" />
  <setting name="useGeneratedKeys" value="false" />
  <setting name="autoMappingBehavior" value="PARTIAL" />
  <setting name="defaultExecutorType" value="SIMPLE" />
  <setting name="defaultStatementTimeout" value="25" />
  <setting name="safeRowBoundsEnabled" value="false" />
  <setting name="mapUnderscoreToCamelCase" value="false" />
  <setting name="localCacheScope" value="SESSION" />
  <setting name="jdbcTypeForNull" value="OTHER" />
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" />
 </settings>
 <typeAliases>
  <typeAlias type="com.uni2uni.Model.User" alias="User" />
 </typeAliases>
 <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="user.xml" />
 </mappers>
</configuration>

        本例中“config.properties”中内容如下所示:

driver:com.mysql.jdbc.Driverusername:root
password:root

        本例中“user.xml”内容如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper  
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.1//EN"  
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="User">
 <insert id="add" parameterType="User">
  insert into t_user(username,password) values(#{username},#{password})
 </insert>
 
 <delete id="deleteById" parameterType="User">
  delete from t_user where id=#{id}
 </delete>
 
 <update id="updateById" parameterType="User">
  update t_user set username=#{username},password=#{password} where id=#{id}
 </update>
 <select id="getAll" parameterType="User">
  select * from t_user
 </select>
 
 <select id="getById" parameterType="User" resultMap="resultListUser">
  select * from t_user where id=#{id} and 1=1
 </select>
 <resultMap type="User" id="resultListUser">
  <id column="id" property="id" />
        <result column="username" property="username" />
        <result column="password" property="password" />
 </resultMap>
</mapper>

(4)配置数据库访问类

        数据库访问类在maven项目中位置为:/src/main/java/中

        本例中位置为:

        /src/main/java/com.uni2uni.Dao/SessionFactoryUtils.java

        /src/main/java/com.uni2uni.Dao/UserDao.java

        “SessionFactoryUtils.java”文件内容如下:

package com.uni2uni.Dao;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SessionFactoryUtils {
 private String source="SqlMapConfig.xml";
    private SqlSessionFactory sqlSessionFactory=null;
    private static SessionFactoryUtils sessionFactory=new SessionFactoryUtils();
    private SessionFactoryUtils(){
        try{
            Reader read=Resources.getResourceAsReader(source);
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(read);
        }catch(IOException e){
            System.out.println("IO异常,读取资源文件SQLMAPPER.XML出错"+e.getMessage());
            throw new ExceptionInInitializerError();
        }
    }
    public static SessionFactoryUtils getSessionfactory(){
        return sessionFactory;
    }
    public SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }
}

        “UserDao.java”文件内容如下:

package com.uni2uni.Dao;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import com.uni2uni.Model.User;
public class UserDao {
 
 private SqlSessionFactory sqlSessionFactory = SessionFactoryUtils
            .getSessionfactory().getSqlSessionFactory();
 
 public void add(User user) {
        SqlSession sqlSession=null;
        try {
             sqlSession=sqlSessionFactory.openSession();
             sqlSession.insert("add", user);
            sqlSession.commit();  
        } finally {
            sqlSession.close();
        }
    }
 
  public void delete(int id) {
         SqlSession sqlSession=null;
         try {
              sqlSession=sqlSessionFactory.openSession();
             sqlSession.delete("User.deleteById", id);
             sqlSession.commit();  
         } finally {
             sqlSession.close();
         }
     }
 
 public User getById(int id) {
        SqlSession sqlSession=null;
        User user=null;
        try{
            sqlSession=sqlSessionFactory.openSession();
            user=sqlSession.selectOne("User.getById",id);
            sqlSession.commit();
        }finally{
            sqlSession.close();
        }
        return user;
    }
}

(5)配置Web.xml

        如果在Web项目中运行MyBatis,还需要配置web.xml文件。如果仅仅是在单元测试中运行MyBatis,则不用配置web.xml文件。

        web.xml中加入如下配置:

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>

 <!-- 指定Spring Bean的配置文件所在目录。默认配置在WEB-INF目录下 -->
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:beans.xml</param-value>
 </context-param>

(6)测试

        测试文件一般放在/src/test/java文件夹中。

        本例中位置为:/src/test/java/com.uni2uni.Unit/UserUnit.java

        “UserUnit.java”文件内容如下:

package com.uni2uni.Unit;
import com.uni2uni.Dao.UserDao;
import com.uni2uni.Model.User;
import junit.framework.TestCase;
public class UserUnit extends TestCase{
 public void AddUser(){
  User user = new User();
  user.setUsername("zhangsan");
  user.setPassword("111");
  UserDao dao=new UserDao();
  dao.add(user);
 }
 
 public void GetById(){
  int id=1;
  User user=null;
  UserDao dao=new UserDao();
  user = dao.getById(id);
  if(user!=null){
   System.out.println(user.getUsername());
   System.out.println(user.getPassword());
  }
 }
 
}

        直到单元测试都通过了,说明MyBatis的配置是正常的。如下图所示:

        

二、Demo下载

下载地址:http://pan.baidu.com/s/1dD1TdL3

三、知识扩展

(1)Maven项目路径

        在Maven项目中,建议按照标准的方式来存放项目。

        /src/main/java:用于存放java类文件。

        /src/main/resources:用于存放配置文件。

        /src/test/java:用于存放测试文件,如单元测试文件。

        本例中项目的目录结构如下图所示:

(2)Mybatis最佳实践之一

        在Mapper文件中,除了使用xml文件写sql的方式外,还支持注解。但不推荐使用注解,而是使用如下的方式:

 <mappers>
  <mapper resource="user.xml" />
 </mappers>

        使用注解的方式通常将sql语句写在model类中,然后使用如下方式引入

 <mappers>
  <mapper resource="命名空间.UserMapper" />
 </mappers>

(3)Mybatis最佳实践之二

        通常,我们会使用代码生成工具来帮我们生成大部分的代码,而不用自己手写。有关代码生成工具的时候,以后再做详细介绍。

© 著作权归作者所有

共有 人打赏支持
上一篇: Spring配置
开源俱乐部
粉丝 10
博文 39
码字总数 31422
作品 0
朝阳
架构师
私信 提问
Mybatis-Generator插件的使用与Spring集成Mybatis的配置

Mybatis-Generator插件 Mybatis-Generator是一个用于自动生成dao层接口、pojo以及mapper xml的一个Mybatis插件,该插件有三种用法:命令行运行、Eclipse插件、maven插件。个人觉得maven插件最...

ZeroOne01
04/15
0
0
Mybatis Generator使用

资源地址: MyBatis项目地址:http://mybatis.github.io/ MyBatis中文使用文档:http://mybatis.github.io/mybatis-3/zh/index.html MyBatis Generator使用文档:http://mybatis.github.io/......

boonya
2016/07/28
259
1
【Smart插件】smart-plugin-mybatis 介绍

smart-plugin-mybatis 是Smart框架的一个Mybatis插件,使用这个插件你可以比较方便的使用Mybatis。 这里主要介绍如何在Smart中使用该插件。 smart-plugin-mybatis插件将mybatis的配置信息从m...

Liuzh_533
2014/04/09
0
3
mybatis学习总结-mybatis初体验

从开始工作到现在,用到的ORM框架都是Hibernate,听说过ibatis,但是一直为看过具体的用法。 前段时间面试的时候,发现好几个公司都问会不会ibatis,所以最近几天对其进行了一下学习,然后在...

qq58edf1d989a2d
06/26
0
0
MyBatis-Spring集成的理解

首先我自己简单介绍一下mybatis mybatis是在配置中写SQL,用对象映射 mybatis看做是是数据持久层的框架,它主要是对数据库和对象的关系进行操作 再说下: mybatis和hibernate的最大区别在于,...

EDIAGD
2013/01/26
0
2

没有更多内容

加载失败,请刷新页面

加载更多

ViewPager系列之软件主页面切换制作

效果图:ViewPager制作的页面能左右滑动,而Fragment制作的页面却不能左右滑动。 代码: <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.......

鱼想吃肉
16分钟前
1
0
大话后端开发的奇淫技巧大集合

Hi,大家好,很荣幸有这个机会可以通过写博文的方式,把这些年在后端开发过程中总结沉淀下来的经验和设计思路分享出来 模块化设计 根据业务场景,将业务抽离成独立模块,对外通过接口提供服务...

James-
16分钟前
0
0
函数

1、函数的定义:从function关键字开始,后面跟随{ (1)函数名字 (2)圆括号 (3)花括号 } function arr() {}

墨冥
17分钟前
0
0
ZABBIX 3.4 (一) 监测Nginx状态及脚本

ZABBIX 3.4 (一) 监测Nginx状态及脚本 2018年08月31日 16:56:48 YoFog 阅读数:106 标签: zabbix agentzabbix nginxnginx_status监控nginxzabbix脚本更多 个人分类: 运维 版权声明:本文...

linjin200
18分钟前
1
0
Spring 之 IOC 初始化总结

IOC 容器的初始化过程分为三步骤: Resource 定位 BeanDefinition 的载入和解析 BeanDefinition 注册 Resource 定位。我们一般用外部资源来描述 Bean 对象,所以在初始化 IOC 容器的第一步就...

专业搬砖工程师
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部