mybatis(3)--第一个mybatis的demo

首先就是搭建环境啦!!!

https://github.com/mybatis/mybatis-3/releases

从这个链接下载mybatis的开发包下载下来

其中mybatis-3.4.4.jar就是其核心包
lib下的包就是相关的日志包,还有代理cglib包,common包等

再加一个log.properties

#开发环境下设置成debug,生产环境设置成info或者error
log4j.rootLogger=DEBUG,A1
log4j.logger.org.mybatis = DEBUG
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

接下来就是配置文件啦!
SqlMapConfig.xml

<?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>
    <!-- 环境变量的配置,但是在和spring整合之后就没用啦 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC">
            </transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
                <property name="username" value="root" />
                <property name="password" value="1234" />
            </dataSource>
        </environment>
    </environments>
    <!-- 加载映射文件 -->
    <mappers>
        <mapper resource="sqlmap/UserMapper.xml"/>
    </mappers>
</configuration>

创建pojo:

package com.ddd.mybatis.pojo;

import java.util.Date;

/**
 * 用户类pojo
 * @author Dan
 *
 */
public class User {
    //和数据库表的user的字段对应
    private int id;
    private String username;
    private String sex;
    private Date birthday;
    private String address;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address="
                + address + "]";
    }


}

然后写映射文件:

<?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" >
<!--
 namespace命名空间,作用是对sql进行分类化管理,理解sql隔离
 使用mapper代理的方法开发namespace有很重要的作用
  -->
<mapper namespace="test" >
    <!-- 在映射文件中配置很多sql语句 -->

    <!-- 通过select执行查询 

    id:用来表示文件中的sql,将sql语句封装到mappedstatement对象中,所以id其实是statement的id

    parameterType:指定输入参数类型,id是int型

    #{}表示一个占位符

    #{id}表示id是接受的输入参数,名字是id,如果输入参数是简单类型,#{}中的参数名可以任意,可以是value或者其他名称

    resultType:
    -->

    <!-- 通过id查询用户 -->
    <select id="findUserById" parameterType="int" resultType="com.ddd.mybatis.pojo.User">
        SELECT * FROM USER WHERE id=#{id}
    </select>
</mapper>

写完记得将其加入到sqlMapConfig中去

写完之后来测试吧!

package com.ddd.mybatis.first;
import java.io.IOException;
import java.io.InputStream;
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;
import org.junit.Test;

import com.ddd.mybatis.pojo.User;
/**
 * 测试mybatisdemo
 * @author Dan
 *
 */
public class MybatisFirst {
    //根据id查询用户信息得到一条结果记录
    @Test
    public void findUserByIdTest() throws IOException{
        //加载mybatis文件
        String fileSource="SqlMapConfig.xml";
        //获取文件流
        InputStream inputStream=Resources.getResourceAsStream(fileSource);
        //根据加载的配置文件信息创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        //得到sqlsession
        SqlSession sqlSession=sqlSessionFactory.openSession();

        //sqlSession操作数据库
        //第一个参数:映射文件中的statement的id:也就是namespace+"."+statement的id
        //第二个参数:指定和映射文件中所匹配的parameterType类型的参数
        //接受参数就是resultType中指定的对象类型
        User u=sqlSession.selectOne("test.findUserById", 1);
        System.out.println(u);
        sqlSession.close();


    }


}

运行结果:

2017-07-16 16:50:41,356 [main] [org.apache.ibatis.logging.LogFactory]-[DEBUG] Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
2017-07-16 16:50:41,621 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] PooledDataSource forcefully closed/removed all connections.
2017-07-16 16:50:41,622 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] PooledDataSource forcefully closed/removed all connections.
2017-07-16 16:50:41,622 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] PooledDataSource forcefully closed/removed all connections.
2017-07-16 16:50:41,622 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] PooledDataSource forcefully closed/removed all connections.
2017-07-16 16:50:41,763 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Opening JDBC Connection
2017-07-16 16:50:42,061 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] Created connection 998865748.
2017-07-16 16:50:42,061 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@3b897b54]
2017-07-16 16:50:42,065 [main] [test.findUserById]-[DEBUG] ==>  Preparing: SELECT * FROM USER WHERE id=? 
2017-07-16 16:50:42,143 [main] [test.findUserById]-[DEBUG] ==> Parameters: 1(Integer)
2017-07-16 16:50:42,195 [main] [test.findUserById]-[DEBUG] <==      Total: 1
User [id=1, username=小明, sex=男, birthday=Fri Sep 09 00:00:00 CST 2011, address=北京市海淀区]
2017-07-16 16:50:42,198 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@3b897b54]
2017-07-16 16:50:42,199 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@3b897b54]
2017-07-16 16:50:42,199 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] Returned connection 998865748 to pool.

第一个小程序完成,基本的mybatis运行原理差不多就是这样!开心!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值