Mybatis基础配置详解

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

你可能感兴趣的:(mybatis,新手,配置)