mybatis 基础详解

mybatis 是一个开源的 用于对数据库操作的框架, 读者基本都大体了解其基本功能, 我就不多解释了 直接上demo吧。

我用的是maven管理包, 如下

<dependencies>
        <dependency>
            <groupId>org.springFrameworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>3.2.8.RELEASEversion>
        dependency>
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.40version>
        dependency>
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.2.8version>
        dependency>
        <dependency>
            <groupId>log4jgroupId>
            <artifactId>log4jartifactId>
            <version>1.2.12version>
        dependency>
        <dependency>
            <groupId>org.apache.logging.log4jgroupId>
            <artifactId>log4j-apiartifactId>
            <version>2.7version>
        dependency>
        <dependency>
            <groupId>org.apache.logging.log4jgroupId>
            <artifactId>log4j-coreartifactId>
            <version>2.7version>
        dependency>
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-apiartifactId>
            <version>1.6.4version>
        dependency>
        <dependency>
            <groupId>commons-logginggroupId>
            <artifactId>commons-loggingartifactId>
            <version>1.1.3version>
        dependency>
        <dependency>
            <groupId>cglibgroupId>
            <artifactId>cglibartifactId>
            <version>2.2.2version>
        dependency>
        <dependency>
            <groupId>asmgroupId>
            <artifactId>asmartifactId>
            <version>3.3.1version>
        dependency>
    dependencies>

如果不是用的maven管理包, 也可以找下列包进行导入, 一下是javaWeb项目的目录结构,在这里我主要是用maven来做,其实都一样的。

mybatis 基础详解_第1张图片

 导好包之后呢,我们就要开始做mybatis项目了。

-- 1:在src下写入配置文件sqlMapConfig.xml,可以参照下方 

DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    
    <properties resource="db.properties">
        
    properties>
    
    
    <typeAliases>
        
        
        
        <package name="cn.itcast.mybatis.po"/>
        
    typeAliases>
    
    
    <environments default="development">
        <environment id="development">
        
            <transactionManager type="JDBC" />
        
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            dataSource>
        environment>
    environments>
    
    
    <mappers>
        
        <mapper resource="sqlmap/User.xml" />
        
        
        
        
        <package name="cn.itcast.mybatis.mapper"/>
        
        
    mappers>
    
    
configuration>

-- 2: 配置完sqlMapConfig之后我们就先把实体类弄好吧。  src下创建一个实体类

import java.util.Date;

public class User {
    private Integer id;
    private String username;
    private String sex;
    private Date birthday;
    private String address;
    public Integer getId() {
        return id;
    }
    public void setId(Integer 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 + "]";
    }
    
    
}

-- 3: 然后我们就开始写映射文件了

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="test">
    
    <select id="findUserById" parameterType="int"
        resultType="com.weibang.mybatis.beans.User">
        SELECT * FROM user WHERE id=#{id}
    select>

    
    <select id="findUserByName" parameterType="String"
        resultType="com.weibang.mybatis.beans.User">
        SELECT * FROM user WHERE username LIKE '%${value}%'
    select>

    
    <insert id="InsertUser" parameterType="com.weibang.mybatis.beans.User">
        
        <selectKey keyProperty="id" order="AFTER" resultType="int">
            SELECT
            LAST_INSERT_ID()
        selectKey>
        INSERT INTO user (username,birthday,sex,address)
        VALUES(#{username},#{birthday},#{sex},#{address})
    insert>
    
    
    <delete id="deleteUser" parameterType="int">
        delete from user where id
        = #{id}
    delete>
    
    <update id="updateUser" parameterType="com.weibang.mybatis.beans.User">
        update user set
        username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
        where id = #{id}
    update>
mapper>

-- 4: 映射文件写好了之后, 我们其实就可以进行测试了, 我们这里用的是junit测试

import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

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.Before;
import org.junit.Test;

import com.weibang.mybatis.beans.User;

public class First_test {
    private SqlSessionFactory sqlsessionFactory;
     
    // 创建会话工厂
    @Before
    public void init() throws IOException {
        // 创建会话工厂
        // 配置文件(sqlMapConfig.xml)
        String resource = "SqlMapConfig.xml";
        // 将配置文件加载到输入流中
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 创建会话工厂
        sqlsessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }
    
    @Test
    public void testFindById() {
        // 通过sqlsessionFactory来创建sqlsession
        SqlSession sqlsession = sqlsessionFactory.openSession();
        // 第一个参数: statement的位置,等于namespace+statement的ID
        // 第二个参数: 传入的参数
        User user = null;
        try {
             user= sqlsession.selectOne("test.findUserById", 1);
            
        }catch(Exception e) {
            e.printStackTrace();
        } 
        finally {
            // 关闭sqlsession
            sqlsession.close();
        }
        System.out.println(user);
        
    }
    
    /**测试: 根据名字模糊查询*/
    @Test
    public void testFindByName()throws Exception {
        SqlSession sqlsession = sqlsessionFactory.openSession();
        List user = null;
        try {
            user = sqlsession.selectList("test.findUserByName", "小明");
        }catch(Exception e) {
            e.printStackTrace();
        } 
        finally {
            sqlsession.close();        
            }
        System.out.println(user);
    }
    
    /**
     * mybatis 插入 并且获取插入的主键值
     */
    
    @Test
    public void testInsertUser() {
        SqlSession sqlsession = sqlsessionFactory.openSession();
        User user = new User();
        user.setUsername("kenson2");
        user.setBirthday(new Date());
        user.setSex("1");
        user.setAddress("江西南昌");
        int a = 0;
        try {
            a= sqlsession.insert("test.InsertUser", user);
            
        }catch(Exception e) {
            e.printStackTrace();
        } 
        finally {
            sqlsession.commit();
            sqlsession.close();        
            }
        System.out.println("受影响的行数:"+a);
        System.out.println("返回的主键值 "+user.getId());
    }
    /**
     * 测试  根据id删除用户
     */
    @Test
    public void testDelete() {
        SqlSession sqlsession = sqlsessionFactory.openSession();
        int row=0;
        try {
            row =sqlsession.delete("test.deleteUser", 31);
            sqlsession.commit();
        } catch (Exception e) {
            // TODO: handle exception
        }finally {
            sqlsession.close();
        }
        System.out.println("已经删除的行数:"+row);
    }
    /**
     * 测试更新操作
     */
    @Test
    public void testUpdate() {
        SqlSession sqlsession = sqlsessionFactory.openSession();
        User user = new User();
        user.setId(32);
        user.setUsername("kangcheng");
        user.setBirthday(new Date());
        user.setSex("1");
        user.setAddress("福建");
        int row =0;
        try {
             row= sqlsession.update("test.updateUser", user);
             sqlsession.commit();
        } catch (Exception e) {
            // TODO: handle exception
        }finally {
            sqlsession.close();
        }
        System.out.println("已经更新了:"+row+"行");
    }
    
    
}

OK  到这里 我们mybatis的简单增删查改就已经完成了, 对了 数据库要自己建表哦。

 

转载于:https://www.cnblogs.com/Mr-Kenson/p/8124680.html

你可能感兴趣的:(mybatis 基础详解)