czsy

一 认识mybatis

mybatis是一个优秀的数据持久层框架,在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM(对象,关系映射)实现。其封装性要低于Hibernate,性能优越,并且小巧、简单易学,应用也越来越广泛。

二 搭建mybatis环境

1.下载需要的JAR包

2.部署jar文件

将上述下载的jar文件部署到项目内

三 日志配置

在java Resources下新建resource文件,命名config,此时config文件夹和src文件夹是一样的。

在config文件夹下新建log4j.properties文件

 

 并且输入如下代码(可上jar包附带的pdf文档内查看)

# Global logging configuration
#log4j.rootLogger=ERROR, stdout
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

四 工程架构

1.在config文件夹下新建SqlMapConfig.xml(mybatis核心配置文件)

配置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>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/><!-- ${driver} -->
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/><!-- ${url} -->
        <property name="username" value="root"/><!-- ${username} -->
        <property name="password" value="123456"/><!-- ${password} -->
      </dataSource>
    </environment>
  </environments>
</configuration>

 

2.创建持久化类pojo

持久化类是指其实例对象需要被Mybatis持久化到数据库中的类。在应用的设计中,持久化类通常对应需求中的业务实体,mybatis中一般采用POJO编程模型来实现持久化类。

在src文件夹下新建po包

在po包下新建User.java

package pers.czs.mybatis.po;

import java.util.Date;

public class 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;
    }
    
}

 

3.映射文件

映射文件命名:

mapper代理开发映射文件名称叫做xxxMapper.xml,比如:UserMapper.xml

在config文件夹下新建folder,命名为sqlMap(存放映射文件)

在sqlMap下新建User.xml

<?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="test">
    <!-- 在映射文件中配置很多sql语句 -->
    <!-- 
        通过select执行数据库查询
        id:标识映射文件中的sql,
        将sql语句封装到mappedStatement对象中
         parameterType表示指定输入参数类型,这里指定int型
         #{}表示一个占位符,和jdbc内的?一样
         #{id}:其中的id表示接收输入的参数,参数名称就是id,如果输入参数时简单类型,那么#{}中的参数名可以任意
         resultType:指定sql输出结果所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。
     -->
     
     <select id="findUserById" parameterType="int" resultType="pers.czs.mybatis.po.User">
         select * from user where id=#{id}
     </select>
</mapper>

4.在SqlMapConfig文件中加载配置文件

五 程序编写

1.在src内新建first包用于测试

在包内新建MybatisFirst.java文件

package pers.czs.mybatis.first;

import java.io.IOException;
import java.io.InputStream;

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 pers.czs.mybatis.po.User;

public class MybatisFirst {
    //根据id查询用户信息,得到一条记录的结果
    @Test
    public void findUserByIdTest() throws IOException {
        
        //Mybatis配置文件
        String resource = "SqlMapConfig.xml";
        //得到配置文件流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        
        //创建会话工厂,传入配置文件信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂得到SqlSession会话
        SqlSession sqlSession = sqlSessionFactory.openSession();
        
        //通过SqlSession操作数据库
        //第一个参数:映射文件中的id,等于namespace+"."+id 
        //第二个参数:指定和映射文件中所匹配的parameterType类型的参数
        //sqlSession.selectOne的结果是与映射文件中所匹配的resultType类型的对象
        User user = sqlSession.selectOne("test.findUserById", 1);
        System.out.println(user+"  这是输出结果");
        //释放资源
        sqlSession.close();
    }
}

 

2.JUnit运行

运行结果:

其中DEBUG[main]是运行日志

 

相关文章: