浅入mybatis(1)(初识篇 简单配置mybatis)

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。概念性的就不多啰嗦 下面直奔主题

入门篇:

首先我们需要准备mybatis框架开源的jar包 (只有下面两个 我这里是用maven管理的项目) 将以下两个jar包放入pom.xml文件中 我们就可以用可以开始用这个框架了。 

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.1.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
</dependency>

接下来搭建demo项目结构

浅入mybatis(1)(初识篇 简单配置mybatis)

以上是项目的目录结构  注意 :(有一个坑)   就是使用idea开发的时候  我们在mapper下面写xml文件  我们的mybatis-config是载入不了该文件下面的mapper  所以运行会出现报错  为了避免改错误 我们可以在pom.xml文件中配置一下代码

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
    </resource>
</resources>  //这样的话  java目录下面的xml文件才可以被外界查找。

我们写个demo

流程:1.创建数据库sql

           2.准备javaBean

           3.配置mybatis-config.xml 连接数据库的属性  以及纳入项目结构操作数据库的mapper文件

           4.创建xxMapper.xml文件  该文件主要完成是对数据库的增删查找的sql操作

           5.创建xxMapper.xml所对应的Mapper接口 该接口的方法主要对应mapper.xml的id

接下来我们按照步骤丢出代码  并简单理解里面的配置

1:创建数据库sql (自行插入两条数据)

CREATE TABLE `user` (
`id`  varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ,
`name`  varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL ,
`age`  int(11) NULL DEFAULT NULL 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=latin1 COLLATE=latin1_swedish_ci
ROW_FORMAT=COMPACT
;

2:javaBean:(不做过多解释)

package com.mybatis.entity;

import java.io.Serializable;

public class User implements Serializable {
    private String id;

    private String name;

    private Integer age;

    private static final long serialVersionUID = 1L;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id == null ? null : id.trim();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

3  配置mybatis-config.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>
    <!--录入jdbc配置文件-->
    <properties resource="db.properties"></properties>  //这里是读取db.propertie对象

    <typeAliases>  //如果这里用了别名  那么在mapper文件夹下面的mapper语句 的resultType可以写对应的实体类
        <!--这里直接扫描包  就可以用类里面的pojo当做Mapper映射里面的resultType-->
        <package name="com.mybatis.entity"></package>
    </typeAliases>

    <!--配置数据库连接属性-->
    <environments default="test">//配置环境
        <environment id="test">
            <transactionManager type="JDBC"></transactionManager>//开启事务
            <dataSource type="POOLED">//配置数据库连接池
                <property name="driver" value="${jdbc.driver}"></property>
                <property name="url" value="${jdbc.url}"></property>
                <property name="username" value="${jdbc.username}"></property>
                <property name="password" value="${jdbc.password}"></property>
            </dataSource>
        </environment>
    </environments>

    <!--定义mapper辐射的地址-->
    <mappers>
        <!--<mapper resource="com\mybatis\mapper\UserMapper.xml"></mapper>-->
        <package name="com.mybatis.mapper"></package>//将mapper文件载入进来
    </mappers>

</configuration>

 

4.创建xxMapper.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">
<mapper namespace="com.mybatis.mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.mybatis.entity.User">
        <result column="id" jdbcType="VARCHAR" property="id"/>
        <result column="name" jdbcType="VARCHAR" property="name"/>
        <result column="age" jdbcType="INTEGER" property="age"/>
    </resultMap>   //resultMap定义了数据局对应的字段属性 column为数据库字段 property对应我们定义的javaBean字段

    //selectByPrimaryKey 对应Mapper接口中的方法   parameterType对应该方法的参数  resultMap返回的结果
    <select id="selectByPrimaryKey" parameterType="String" resultMap="BaseResultMap">
            select *  from user where id =#{id}
        </select>

    <insert id="insert" parameterType="User">
            insert into user (id, name, age) values (#{id}, #{name}, #{age})
        </insert>

</mapper>

5 创建xxMapper.xml所对应的Mapper接口

package com.mybatis.mapper;

import com.mybatis.entity.User;

public interface UserMapper {

  int deleteByPrimaryKey(String id);

  int insert(User record);

  int insertSelective(User record);

  User selectByPrimaryKey(String id);

  int updateByPrimaryKeySelective(User record);

  int updateByPrimaryKey(User record);
}

 

以上是一个简单的操作Mybatis的流程代码

我们来测试一下

package com.mybatis.test;

import com.mybatis.entity.User;
import com.mybatis.mapper.UserMapper;
import com.mybatis.util.mybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

public class mabitsTest {

  @Test
  public void UserTest() {

    SqlSession sqlSession = mybatisUtil.getSession();

    // 方式1(我在数据库插入了相应的数据  id为"122")
   UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    User user = mapper.selectByPrimaryKey("122");
    System.out.println(user);
    // 方式2
    User user2 = sqlSession.selectOne("com.mybatis.mapper.UserMapper.selectByPrimaryKey", "122");
    System.out.println(user2);
    sqlSession.close();
  }

输出如下:

浅入mybatis(1)(初识篇 简单配置mybatis)

可以观察  两种方式都可以得到User对象  可以看出mapper的接口主要是为mapper.xml服务

简单的配置mybaits就到这里 下面提供一个文档可供学习http://www.mybatis.org/mybatis-3/zh/getting-started.html