天天看點

MyBatis學習2——實作增删改查操作

文章目錄

    • 使用上一次學習的項目
    • 一、查詢操作(按名字查詢)
        • 1.在UserMapper.xml裡添加映射語句
        • 2.在UserMapper接口裡添加方法
        • 3.在測試類TestUserMapper裡添加測試方法
        • 4.測試
    • 二、插入操作
        • 1.在UserMapper.xml裡增加映射語句
        • 2.在UserMapper接口裡增加方法
        • 3.在測試類TestUserMapper裡添加測試方法
        • 4.測試
    • 三、更新操作
        • 1.在UserMapper.xml裡增加映射語句
        • 2.在UserMapper接口裡增加方法
        • 3.在TestUserMapper裡編寫測試方法
        • 4.測試
    • 四、删除操作
        • 1.在UserMapper.xml檔案裡添加映射語句
        • 2.在UserMapper接口裡增加方法
        • 3.在測試類TestUserMapper裡添加測試方法
        • 4.測試
    • 五、本次涉及源碼
        • 映射器配置檔案mybatis-config.xml
        • UserMapper.xml
        • 接口UserMapper.java
        • 測試類TestUserMapper.java
    • 總結

使用上一次學習的項目

更改UserMapper.xml檔案,并引入結果映射元素

MyBatis學習2——實作增删改查操作

測試結果無變化

一、查詢操作(按名字查詢)

1.在UserMapper.xml裡添加映射語句

MyBatis學習2——實作增删改查操作

2.在UserMapper接口裡添加方法

MyBatis學習2——實作增删改查操作

3.在測試類TestUserMapper裡添加測試方法

MyBatis學習2——實作增删改查操作

4.測試

MyBatis學習2——實作增删改查操作

二、插入操作

1.在UserMapper.xml裡增加映射語句

MyBatis學習2——實作增删改查操作

2.在UserMapper接口裡增加方法

MyBatis學習2——實作增删改查操作

3.在測試類TestUserMapper裡添加測試方法

MyBatis學習2——實作增删改查操作

4.測試

MyBatis學習2——實作增删改查操作

三、更新操作

1.在UserMapper.xml裡增加映射語句

MyBatis學習2——實作增删改查操作

2.在UserMapper接口裡增加方法

MyBatis學習2——實作增删改查操作

3.在TestUserMapper裡編寫測試方法

MyBatis學習2——實作增删改查操作

4.測試

MyBatis學習2——實作增删改查操作

四、删除操作

1.在UserMapper.xml檔案裡添加映射語句

MyBatis學習2——實作增删改查操作

2.在UserMapper接口裡增加方法

MyBatis學習2——實作增删改查操作

3.在測試類TestUserMapper裡添加測試方法

MyBatis學習2——實作增删改查操作

4.測試

MyBatis學習2——實作增删改查操作

五、本次涉及源碼

映射器配置檔案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>
    <!--配置實體類别名-->
    <typeAliases>
        <typeAlias type="net.lj.mybatis.bean.User" alias="User"/>
        <typeAlias type="net.lj.mybatis.bean.Clazz" alias="Clazz"/>
        <typeAlias type="net.lj.mybatis.bean.Teacher" alias="Teacher"/>
        <typeAlias type="net.lj.mybatis.bean.Student" alias="Student"/>
    </typeAliases>

     <!--配置資料庫環境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/testdb?useSSL=false&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!--配置實體關系映射器檔案-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
        <mapper resource="mapper/ClazzMapper.xml"/>
        <mapper resource="mapper/StudentMapper.xml"/>    </mappers>
</configuration>
           

UserMapper.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="net.lj.mybatis.mapper.UserMapper">
    <resultMap id="UserMap" type="User">
        <result column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="age" property="age"/>
        <result column="address" property="address"/>
    </resultMap>

    <select id="findById" parameterType="int" resultType="User">
        SELECT * FROM t_user WHERE id = #{id};
    </select>

    <select id="findAll" resultMap="UserMap">
        SELECT * FROM t_user;
    </select>

    <select id="findByName"  resultType="User">
        Select * FROM t_user WHERE name LIKE CONCAT(#{name},'%');
    </select>

    <insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO t_user(name,age,address) VALUE(#{name},#{age},#{address});
    </insert>

    <update id="update" parameterType="User">
        update t_user set name = #{name},age=#{age},address=#{address} where id=#{id};
    </update>

    <delete id="deleteById" parameterType="int">
        delete from t_user where id=#{id};
    </delete>
</mapper>
           

接口UserMapper.java

package net.lj.mybatis.mapper;

import net.lj.mybatis.bean.User;

import java.util.List;

/**
 * 使用者映射器接口
 */
public interface UserMapper {
//    @Select("SELECT * FROM t_user WHERE id = #{id}")
    User findById(int id);
//    @Select("SELECT * FROM t_user")
    List<User> findAll();
    List<User> findByName(String name);
    int insert(User user);
    int update(User user);
    int deleteById(int id);
}
           

測試類TestUserMapper.java

package net.lj.mybatis.mapper;

import net.lj.mybatis.bean.User;
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.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

/**
 * 測試使用者映射器接口
 */

public class TestUserMapper {
    private SqlSession sqlSession;//SQL會話
    private UserMapper userMapper;//使用者映射器

    @Before
    public void init(){
        try {
            //讀取MyBatis配置檔案作為輸入流
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            //基于MyBatis配置檔案建構SQL會話工廠
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
            //利用SQL會話工廠擷取SQL會話
            sqlSession = factory.openSession();
            //利用SQL會話擷取使用者映射器對象
            userMapper = sqlSession.getMapper(UserMapper.class);
            //提示使用者SQL會話建立成功
            System.out.println("sqlSession對象已建立");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testFindById(){
        int id = 1;
        User user = userMapper.findById(id);
        if (user != null) {
            System.out.println(user);
        } else {
            System.out.println("編号為["+id+"]未找到");
        }
    }

    @Test
    public void testFindAll() {
        List<User> users = userMapper.findAll();
        users.forEach(user -> System.out.println(user));
    }

    @Test
    public void testFindByName(){
        String name="王";
        List<User> users = userMapper.findByName(name);
        if (users.size() > 0) {
            users.forEach(user -> System.out.println(user));
        } else {
            System.out.println("沒有找到姓名為["+name+"]的紀律");
        }
    }

    @Test
    public void testInsert(){
        User user = new User();
        user.setName("張三");
        user.setAge(30);
        user.setAddress("東北三裡屯窩窩鄉3号");
        int count = userMapper.insert(user);
        sqlSession.commit();//送出資料庫
        if (count > 0) {
            System.out.println("記錄插入成功");
            System.out.println("插入的新記錄:" + user);
        } else {
            System.out.println("記錄插入失敗");
        }
    }

    @Test
    public void testUpdate(){
        User user=userMapper.findById(4);
        System.out.println("更新前的記錄" + user);
        user.setName("麼麼哒");
        user.setAge(25);
        user.setAddress("北京市海澱區天朝路6号小區");
        int count = userMapper.update(user);
        sqlSession.commit();//送出
        if (count > 0) {
            System.out.println("更新成功");
            System.out.println("更新後的記錄:" + user);
        } else {
            System.out.println("更新失敗");
        }
    }

    @Test
    public void deleteById(){
        int id = 5;
        User user = userMapper.findById(id);
        System.out.println("待删除的記錄" + user);
        userMapper.deleteById(id);
        sqlSession.commit();//送出
        System.out.println("編号為“" + id + "”的記錄删除成功");
        user = userMapper.findById(id);
        if (user != null) {
            System.out.println(user);
        } else {
            System.out.println("編号為“" + id + "”的記錄未找到");
        }
    }

    @After
    public void destroy(){
        //關閉SQL會話
        sqlSession.close();
        //提示使用者SQL會話關閉
        System.out.println("sqlSession對象已關閉");
    }
}
           

總結

通過兩次學習,對MyBatis更加的熟悉了,步驟雖多但條理清晰。隻是在使用者關系配置檔案上的了解還有些淩亂。