MyBatis框架學習Ⅲ

Talking is Cheap,Show Me the Code

回顧

MyBatis框架學習Ⅱ中已經(jīng)創(chuàng)建了一個簡單的MyBatis查詢數(shù)據(jù)庫的小demo,也知道了使用MyBatis的大致步驟:

  • 創(chuàng)建與數(shù)據(jù)庫表相對應的實體類
  • 創(chuàng)建實體類對應的映射文件,聲明要進行的操作(增刪改查)
  • 創(chuàng)建配置文件,聲明數(shù)據(jù)庫等配置信息
  • 在相應位置進行調(diào)用

增刪改查的實現(xiàn)

之前只是實現(xiàn)了簡單的查詢,這次對增刪該查都進行實現(xiàn)。

實體類、數(shù)據(jù)庫表、配置文件

實體類不變,使用的數(shù)據(jù)庫表不變,工程配置文件不變,都與之前相同。

增加一個接口

增加一個實體接口IUser,聲明增刪該查的方法相應接口。

public interface IUser {
    public void insertUser(User user);
    public void deleteUser(int userId);
    public void updateUser(User user);
    public List<User> getUserList();
    public User getUser(int id);
}
實體類映射文件

因為要實現(xiàn)增刪改查,所以對應的實體類映射文件也要相應的進行修改,聲明增刪該查的語句,映射的空間與接口相對應

<?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.dao.IUser">
    <select id="getUser" parameterType="int" resultType="com.bean.User">
        SELECT * FROM USERS WHERE id = #{userId}
    </select>

    <insert id="insertUser" parameterType="User">
        INSERT INTO USERS(name, dept, website, phone)
              VALUES (#{name}, #{dept}, #{website}, #{phone})
    </insert>

    <select id="getUserList" resultType="com.bean.User">
        SELECT * FROM USERS
    </select>

    <update id="updateUser" parameterType="User">
        UPDATE USERS
        SET
            name = #{name},
            dept = #{dept},
            website = #{website},
            phone = #{phone}
        WHERE id = #{id}
    </update>

    <delete id="deleteUser" parameterType="int">
        DELETE FROM USERS WHERE id = #{id}
    </delete>
</mapper>
測試類

修改測試類,進行測試

public class Main {
    private static SqlSessionFactory sqlSessionFactory;
    private static Reader reader;

    static {
        try {
            reader = Resources.getResourceAsReader("config/Configure.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
          } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static SqlSessionFactory getSession() {
        return sqlSessionFactory;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        SqlSession session = sqlSessionFactory.openSession();
        try {
            //sqlSessionFactory.getConfiguration().addMapper(IUser.class);
            //User user = (User) session.selectOne( "com.bean.UserMapper.getUserByID", 1);

            // 用戶數(shù)據(jù)列表
            getUserList();
            // 插入數(shù)據(jù)
            Insert();
            // 更新用戶
            Update();
            // 刪除數(shù)據(jù)
            Delete();
        } finally {
            session.close();
        }
    }

    //插入
    public static void Insert() {
        try {
            // 獲取Session連接
            SqlSession session = sqlSessionFactory.openSession();
            // 獲取Mapper
            IUser userMapper = session.getMapper(IUser.class);
            System.out.println("insert start...");
            // 執(zhí)行插入
            User user = new User();
            user.setId(0);
            user.setName("Google");
            user.setDept("Tech");
            user.setWebsite("http://www.google.com");
            user.setPhone("120");
            userMapper.insertUser(user);
            // 提交事務
            session.commit();

            // 顯示插入之后User信息
            System.out.println("after insert");
            getUserList();
            System.out.println("insert finished...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 獲取用戶列表
    public static void getUserList() {
        try {
            SqlSession session = sqlSessionFactory.openSession();
            IUser iuser = session.getMapper(IUser.class);
            // 顯示User信息
            System.out.println("Get start...");
            printUsers(iuser.getUserList());
            System.out.println("Get finished...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //修改
    public static void Update() {
        try {
            SqlSession session = sqlSessionFactory.openSession();
            IUser iuser = session.getMapper(IUser.class);
            System.out.println("update start...");
            printUsers(iuser.getUserList());
            // 執(zhí)行更新
            User user = iuser.getUser(1);
            user.setName("New name");
            iuser.updateUser(user);
            // 提交事務
            session.commit();
            // 顯示更新之后User信息
            System.out.println("after update");
            printUsers(iuser.getUserList());
            System.out.println("update finished...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 刪除
    public static void Delete() {
        try {
            SqlSession session = sqlSessionFactory.openSession();
            IUser iuser = session.getMapper(IUser.class);
            System.out.println("delete start...");
            // 顯示刪除之前User信息
            System.out.println("Before delete");
            printUsers(iuser.getUserList());
            // 執(zhí)行刪除
            iuser.deleteUser(2);
            // 提交事務
            session.commit();
            // 顯示刪除之后User信息
            System.out.println("after delete");
            printUsers(iuser.getUserList());
            System.out.println("delete finished...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 打印用戶信息到控制臺
     * @param users
     */
    private static void printUsers(final List<User> users) {
        int count = 0;
        for (User user : users) {
            System.out.println(MessageFormat.format("======== User[{0}]=======",
                                            ++count));
            System.out.println("User Id: " + user.getId());
            System.out.println("User Name: " + user.getName());
            System.out.println("User Dept: " + user.getDept());
            System.out.println("User Website: " + user.getWebsite());
        }
    }
}

運行結(jié)果,增刪該查這樣就完成了(這里使用的是接口,將增刪改查方法都放在接口中,然后再實體類映射文件映射空間指定為該接口類,并且在調(diào)用時通過接口來映射;當然,也可像Ⅰ中那樣用空間和id來指定方法

運行結(jié)果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容