文档章节

Mybatis基础配置详解

奔跑的菜菜
 奔跑的菜菜
发布于 2015/07/05 20:15
字数 1073
阅读 222
收藏 1

本文主要介绍怎么配置Mybatis,适合零基础的朋友,我会尽量写的详细点,如果有错误的地方,还请大神们指教,我也是个小菜鸟。


首先我用的工具是Eclipse,数据库是MySQL(oracle也可以参照此文配置),Mybatis3.0.4,废话不多说,开始配置。

假设有一张user表(userid,username,password),我们要做一个登录功能,也就是根据username和password查找一条记录。

第一步,建立一个项目,导入Mybatis的jar包,web项目记得放到lib文件夹里。

第二步,建立一个User类。

package com.test.dto;
public class User {
    private int userid;
    private String username;
    private String password;
    public int getUserid() {
        return userid;
    }
    public void setUserid(int userid) {
        this.userid = userid;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

第三步,配置mybatis.cfg.xml这个文件,并且将这个xml文件放在src的下面。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeAliases>
        <!--这里用来注册javabean,type要用包名+类名,alias是给这个javabean起的别名,以后用到这个
        javabean的时候可以用别名来代替,别名可以任意格式,但是我们还是用一些规范格式比较好-->
        <typeAlias type="com.test.dto.User" alias="User" />
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <!--驱动-->
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <!--3306是mysql默认端口号,testweb是数据库名-->          
                <property name="url" value="jdbc:mysql://localhost:3306/testweb" />
                <!--mysql的用户名和密码-->
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--这里先空着,一会还有配置信息填写-->
        <mapper resource=""/>
    </mappers>
</configuration>

第四步,写一个sqlsession类,方便我们调用。

package com.test.util;

import java.io.Reader;

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 MyBatisSqlSession {
    private static MyBatisSqlSession myBatisSqlSession = new MyBatisSqlSession();
    private SqlSessionFactory factory;
    private MyBatisSqlSession(){
        try{
            String resource = "mybatis.cfg.xml";
            Reader reader = Resources.getResourceAsReader(resource);
            factory = new SqlSessionFactoryBuilder().build(reader);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public static MyBatisSqlSession getMyBatisSqlSession() {
        return myBatisSqlSession;
    }
    
    public SqlSession getSqlSession(){
        return factory.openSession();
    }
    
    public void closeSqlSession(SqlSession sqlSession){
        if(sqlSession!=null){
            sqlSession.close();
        }
    }
}

第五步,写一个接口以及实现该接口的方法,这个借口里写的是对user操作的一些方法,比如增删改查,这里我们写一个login方法。

接口:

package com.test.dao.user;
import com.test.dto.User;
public interface UserDao {
    public User login(User user);
}

类(以后要添加方法的时候一定要先在接口中添加,再在类中实现):

package com.test.dao.user;
import org.apache.ibatis.session.SqlSession;

import com.test.dto.User;
import com.test.util.MyBatisSqlSession;
public class UserDaoImpl implements UserDao {
    private MyBatisSqlSession myBatisSqlSession = MyBatisSqlSession.getMyBatisSqlSession();
    SqlSession sqlSession = null;
    @Override
    public User login(User user) {
        try{
            sqlSession = myBatisSqlSession.getSqlSession();
            return sqlSession.getMapper(UserDao.class).login(user);        
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            myBatisSqlSession.closeSqlSession(sqlSession);
        }
        return null;
    }

}

第六步,建立UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
" 
<!--这里是映射到接口文件-->
<mapper namespace="com.test.dao.user.UserDao">
    <!--select表示这个sql语句是查询语句,增加删除修改同理,大家自己探索吧,id是要和接口里的方法名相同,
    也就是你要调用的那个方法,resultType就是返回的类型,login方法里我们返回的是User类,所以这里返回类
    型是User类,值得一提的是,此处的User就是mybatis.cfg.xml里的User,注意大小写!-->
    <select id="login" resultType="User">
    <!--这个就是平常的sql语句,#{username}代表login方法传进来的那个user参数里的username属性,
    #{password}也是一样,没有分号。-->
    SELECT * FROM user WHERE username = #{username} and password = #{password}
    </select>
</mapper>

第七步,回到mybatis.cfg.xml,补充配置文件

 <mappers>
    <!--补上这段话,我将UserMapper.xml文件放在com.test.dao.user下面,这样方便查找,比较规范-->
    <mapper resource="com/caichao/web/dao/user/UserMapper.xml"/>
    </mappers>

第八步,用junit开始测试吧,没有的话直接写个jsp测试吧,测试前先把xml里的中文备注都删了,再检查下是否导入驱动

@Test
    public void testLogin(){
        User user = new User();
        user.setUsername("a1");
        user.setPassword("123");
        User u = this.login(user);
        System.out.println(u.getUserid()+"\t"+u.getUsername()+"\t"+u.getPassword());
    }


这是一个中规中矩的MyBatis的配置过程,很多朋友都没有第五步以及和第五步相关的一些操作,这个各有各的写法吧,对于新手,我还是觉得这样配置使用是比较好的,这篇文章是结合我平时的使用总结的过程,有不足不对或者需要改进的地方,请大神们指点一二。

© 著作权归作者所有

奔跑的菜菜
粉丝 7
博文 10
码字总数 10088
作品 0
马鞍山
程序员
私信 提问
加载中

评论(1)

i
itxx2016
推荐国内最流行的iBatis、MyBatis代码生成网站: fwjava.com
网站在线生成,操作极其简单,生成的代码十分规范好用,经历过实战的主流代码啊.
现在,大多数知名的互联网公司都在用它.
泥沙砖瓦浆木匠/springboot-learning-example

springboot-learning-example spring boot 实践学习案例,是 spring boot 初学者及核心技术巩固的最佳实践。 推荐 springcloud-learning-example spring cloud 实践学习案例 https://github...

泥沙砖瓦浆木匠
2017/03/29
0
0
spring boot 实践学习案例--springboot-learning-example

springboot-learning-example 是 spring boot 实践学习案例,是 spring boot 初学者及核心技术巩固的最佳实践。 「Spring Boot 那些事」:传送门 a. 基础 springboot 版本 1.5.1.RELEASE sp...

泥沙砖瓦浆木匠
2017/03/29
6.7K
8
mybatis缓存机制详解(一)——Cache

缓存概述 在mybatis中,缓存的功能由根接口Cache(org.apache.ibatis.cache.Cache)定义。整个体系采用装饰器设计模式,数据存储和缓存的基本功能由PerpetualCache(org.apache.ibatis.cache...

拉风小野驴
2016/02/24
4.1K
1
Spring Boot 整合 MyBatis/通用Mapper/PageHelper分页插件

整合MyBatis 整合通用Mapper 0. 基础知识 通用Mapper一般配置MyBatis, MBG插件使用 个人实践证明,通用Mapper配合其特定的MBG插件不如直接使用官方MBG插件方便 1. POM依赖配置 2. 通用Mappe...

OSC_fly
2018/07/17
0
0
mybatis--总结

1.mybatis简介 mybatis是一个基于java的持久层框架,支持普通sql查询/存储过程/对象映射,它使用xml配置或者注解配置来做映射,将普通java对象映射到数据库中。 2.mybatis功能分层 2.1api接口...

求是科技
2016/10/12
45
0

没有更多内容

加载失败,请刷新页面

加载更多

最简单的获取相机拍照的图片

  import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import andr......

MrLins
15分钟前
1
0
说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~

随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在...

个推
16分钟前
4
0
第三方支付-返回与回调注意事项

不管是支付宝,微信,还是其它第三方支付,第四方支付,支付机构服务商只要涉及到钱的交易都要进行如下校验,全部成功了才视为成功订单 1.http请求是否成功 2.校验商户号 3.校验订单号及状态...

Shingfi
19分钟前
3
0
简述Java内存分配和回收策略以及Minor GC 和 Major GC(Full GC)

内存分配: 1. 栈区:栈可分为Java虚拟机和本地方法栈 2. 堆区:堆被所有线程共享,在虚拟机启动时创建,是唯一的目的是存放对象实例,是gc的主要区域。通常可分为两个区块年轻代和年老代。更...

DustinChan
25分钟前
4
0
Excel插入批注:可在批注插入文字、形状、图片

1.批注一直显示:审阅选项卡-------->勾选显示批注选项: 2.插入批注快捷键:Shift+F2 组合键 3.在批注中插入图片:鼠标右键点击批注框的小圆点【重点不可以在批注文本框内点击】----->调出批...

东方墨天
49分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部