Mybatis基础学习一

Mybatis,是一个轻量级的ORM产品,比较适合中小型项目,适合我的要求。

Mybatis 所需要的包:
Mybatis3.jar 核心包
ognl.jar  Mybatis 使用 ognl 解析XML文件。
javassist.jar , 该文件一般情况下,在WEB容器下都有,只是 APPLICATION下需要另外引入。

其它因为项目而使用的包:
1. JDBC 包。(连接数据库嘛,必须的。)
2. 日志. slf4j 或 log4j等。
我使用的是 slf4j  , 日志实现 用logback-core和  logback-classic 2个jar包。

上面,把最基本的编码所需要的东西列了一下。
接下来,需要XML配置文件和java code。

配置文件
1. mybatis的配置文件
<?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>
    <properties resource="configs/jdbc.properties"></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="test/orm/JUserDao.xml"></mapper>
    </mappers>  
</configuration>


2. logback的日志配置Console输出
<?xml version="1.0" encoding="UTF-8"?>
<configuration>   
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">        
        <encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder>
    </appender>
    <root level="INFO"><appender-ref ref="STDOUT" /></root>
</configuration>


接下来,就要开始编写代码了。
先是实例化 SqlSessionFactory ,使它成为全局的对象。
private static final Logger log=org.slf4j.LoggerFactory.getLogger(DbFactory.class);
private static  SqlSessionFactory factory;
static{
        String resource="configs/mybatisconfig.xml";
        Reader reader;
        try {
            reader = Resources.getResourceAsReader(resource);
            SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();            
            factory=builder.build(reader);
        } catch (IOException ex) {
            log.error("mybatis configuration build error!",ex);
            System.exit(1);
        }
    }
    
    public static SqlSession getSqlSession(){
        return factory.openSession();
    }



完成SqlSession的获取方法后,就是操作数据库了。
这里的pojo JUser类就省略不贴出来了。
public JUser selectOneUser(String userid){
        SqlSession sess=DbFactory.getSqlSession();
        JUser ret;
        try
        {
            JUserDao userdao=sess.getMapper(JUserDao.class);
            ret=userdao.selectOneUser(userid);
        }
        finally{
            sess.close();
        }
        return ret;
    }

这就是Mybatis的数据库操作的接口文件。通过 SqlSession.getMapper方法可以得到一个实例,这就是Mybatis的作用之一,不需要用户去编写一个实现类。
public interface  JUserDao { 
        
    public JUser selectOneUser(String userid);
    
    public List<JUserView> selectUsers(String deptid);    
}


这里,最主要的就是JUserDao.xml文件了,getMapper的时候,mybatis根据类名的方法名,去找到对应的XML里的语句,再执行,并将结果返回。
<resultMap id="userResultMap" type="test.orm.model.JUser">
        <id property="userid" column="user_id" jdbcType="CHAR" />
        <result property="username" column="user_name" jdbcType="CHAR"/>
        <result property="password" column="password" jdbcType="CHAR"/>        
</resultMap>
<select id="selectOneUser" resultMap="userResultMap" parameterType="string" >
        select user_id,user_name,password from tb_user
        where user_id=#{userid}
</select>



下面是我的所有代码的清单

Mybatis中文手册 http://dl2.iteye.com/upload/attachment/0114/6200/fd005f15-bcbd-3251-b94b-f249bddf24a8.pdf

猜你喜欢

转载自lorenhood.iteye.com/blog/2271791