Mybatis環境搭建及測試


1、新建java project,導入相應jar包

本次使用到的mybatis-3.2.7版本

mybatis需要jar包:mybatis-3.2.7.jar、lib文件下的依賴jar

mysql驅動jar包:mysql-connector-java-5.1.7.-bin.jar

2、創建數據庫

數據庫名:mybatis

數據表:user

3、配置mybaits核心配置文件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配置將廢除-->
    <environments default="development">
        <environment id="development">
            <!-- type="JDBC" 代表使用JDBC的提交和回滾來管理事務 -->
            <transactionManager type="JDBC" />
            
            <!-- mybatis提供了3種數據源類型,分別是:POOLED,UNPOOLED,JNDI -->
            <!-- POOLED 表示支持JDBC數據源連接池 -->
            <!-- UNPOOLED 表示不支持數據源連接池 -->
            <!-- JNDI 表示支持外部數據源連接池 -->
            <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="mysqladmin" />
            </dataSource>
        
        </environment>
    </environments>
    
    <mappers>
        <mapper resource="User.xml"/>
    </mappers>
    
    
</configuration>
SqlMapConfig.xml放入項目中config源文件下

4、創建對應數據表的java實體類

User.java

package cn.itheima.pojo;

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;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", sex=" + sex
                + ", birthday=" + birthday + ", address=" + address + "]";
    } 

}

 

5、創建對應的映射文件

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隔離 -->
<mapper namespace="test">
    <!-- 
    id:sql語句唯一標識
    parameterType:指定傳入參數類型(pojo類中對應的類型,不是數據庫中的類型)
    resultType:返回結果集類型
    #{}:占位符,如果傳入的類型是基本類型(string,long,double,int,boolean,float等),那么#{}中變量名稱可以任意
     -->
    <select id="findUserById" parameterType="java.lang.Integer" resultType="cn.itheima.pojo.User">
        SELECT * FROM user WHERE id=#{id}
    </select>
    
    <!-- 
    如果返回的結果為集合,resultType中也是配置為集合中泛型的類型,即resultType="cn.itheima.pojo.User"
    ${}:拼接符,如果傳入的類型是基本類型(string,long,double,int,boolean,float等),那么${}中變量名稱必須是value
     -->
    <select id="findUserByUserName" parameterType="java.lang.String" resultType="cn.itheima.pojo.User">
        SELECT * FROM user WHERE username LIKE '%${value}%'
    </select>
    
    <!-- 
    如果傳入的是pojo類型,則#{}中變量名稱必須是pojo中對應的屬性.屬性.屬性......
    如果要返回數據庫自增主鍵,可以使用SELECT LAST_INSERT_ID()
     -->
    <insert id="insertUser" parameterType="cn.itheima.pojo.User">
        <!-- 執行SELECT LAST_INSERT_ID()數據庫函數,返回自增的主鍵
            keyProperty:將返回的主鍵放入傳入的參數的Id中保存(保存到user對象中的id屬性)
            order:當前函數相對於insert語句的執行順序,在insert前執行用BEFORE,在insert后執行用AFTER
            resultType:id的類型,也就是keyProperty中屬性類型
         -->
        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
            SELECT LAST_INSERT_ID()
        </selectKey>
        INSERT INTO user (username,birthday,sex,address) VALUES (#{username},#{birthday},#{sex},#{address})
    </insert>
    
    <delete id="deleteUserById" parameterType="java.lang.Integer">
        DELETE FROM user WHERE id=#{id}
    </delete>
    
    <update id="updateUserById" parameterType="cn.itheima.pojo.User">
        UPDATE user SET  username=#{username} WHERE id=#{id}
    </update>
</mapper>

 

二、測試

package mybatis0523;

import java.io.InputStream;
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.Test;

import cn.itheima.pojo.User;

public class UserTest {

    @Test
    public void testFindUserById() throws Exception {
        String resource = "SqlMapConfig.xml";
        // 通過流將核心配置文件讀取進來
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 通過核心配置文件創建會話工廠
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        
        // 通過會話工廠創建會話
        SqlSession session = factory.openSession();
        
        User user = session.selectOne("test.findUserById", 1);
        System.out.println(user);
    }
    
    @Test
    public void testFindUserByUserName() throws Exception {
        String resource = "SqlMapConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        
        SqlSession session = factory.openSession();
        List<User> list = session.selectList("test.findUserByUserName", "王");
        System.out.println(list);
    }
    
    @Test
    public void testInsertUser() throws Exception {
        String resource = "SqlMapConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        
        SqlSession session = factory.openSession();
        User user = new User();
        user.setUsername("趙四");
        user.setBirthday(new Date());
        user.setSex("1");
        user.setAddress("北京昌平");
        System.out.println(user.getId());
        
        session.insert("test.insertUser", user);
        // mybatis中事務默認是開啟的,所以在mybatis中不需要顯式開啟事務,只需要顯式提交事務
        // 提交事務
        session.commit();
        System.out.println(user.getId());
    }
    
    @Test
    public void testDeleteUserById() throws Exception {
        String resource = "SqlMapConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        
        SqlSession session = factory.openSession();
        session.delete("test.deleteUserById", 27);
        session.commit();
    }
    
    @Test
    public void testUpdateUserById() throws Exception {
        String resource = "SqlMapConfig.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        
        SqlSession session = factory.openSession();
        
        User user = new User();
        user.setUsername("趙四");
        user.setId(24);
        session.update("test.updateUserById", user);
        session.commit();
    }
}

 

 

簡單的mybatis環境搭建和測試已完成,整個目錄結構如下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM