MyBatis框架學習之增刪改查

一、MyBatis jar包

下載mybatis的jar包,本文中使用maven進行管理,配置如下:

 <!-- 導入mybatis jar包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.2.8</version>
    </dependency>
    <!-- 導入oraclejar包 -->
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>10.2.0.1.0</version>
    </dependency>

其中對於oracle的jar包,需要使用mvn install命令進行安裝,需要提前下載好所需要的oraclejar包,具體命令如下:
mvn install:install-file -Dfile=jar包的位置 -DgroupId=pom中groupId -DartifactId=pom中artifactId -Dversion=pom中version -Dpackaging=jar

二、Mybatis xml配置

1、配置數據源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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
                <property name="username" value="****"/>
                <property name="password" value="***"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/mybatis/entity/userMapping.xml"/><!-- 映射文件路徑 -->
    </mappers>
</configuration>

2、配置實體映射文件userMapping.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="mybatis.testcurd">
    <!-- 以下使用實體來進行增刪改查 -->
    <!-- 插入語句 -->
    <insert id="insertUser" parameterType="com.mybatis.entity.User"><!-- 傳入的參數的類型 -->
        <selectKey resultType="java.lang.Long" keyProperty="id" order="BEFORE">
            SELECT user_t_seq.nextval FROM DUAL 
        </selectKey>
        insert into user_t(id,username,password,birthday,email,zipcode,address) 
        values(#{id},#{username},#{password},#{birthday},#{email},#{zipcode},#{address})
    </insert>

    <!-- 查詢 語句,返回值爲list集合-->
    <select id="queryUserInfoById" parameterType="long" resultType="com.mybatis.entity.User">
        select * from user_t where id = #{id}
    </select>

    <!-- 更新語句 -->
    <update id="updateUserById" parameterType="com.mybatis.entity.User">
        update user_t set username=#{username} where id=#{id} 
    </update>

    <!-- 刪除語句 -->
    <delete id="deleteUserById" parameterType="long">
        delete user_t where id = #{id}
    </delete>


    <!-- 使用map來進行增刪改查 -->
    <insert id="insertUserByMap" parameterType="map">
        <selectKey keyColumn="id" keyProperty="id" order="BEFORE" resultType="java.lang.Long">
            select user_t_seq.nextval from dual
        </selectKey>
        insert into user_t(id,username,password,birthday,email,zipcode,address) 
        values(#{id},#{username},#{password},#{birthday},#{email},#{zipcode},#{address})
    </insert>

    <!--使用map傳遞參數  -->
    <select id="selectUserByMap" parameterType="map" resultType="map">
        select * from user_t
    </select>

    <select id="selectOneUserByMap" parameterType="map" resultType="map">
        select * from user_t where id= #{id}
    </select>

    <update id="updateUserByMap" parameterType="map">
        update user_t set username=#{username} where id=#{id}
    </update>

    <delete id="deleteUserByMap" parameterType="map">
        delete from user_t where id = #{id}
    </delete>
</mapper>

3、進行測試,測試代碼如下:

    private SqlSession session = null;

    @Before
    public void before(){
        SqlSessionFactory factory = SqlSessionFactoryUtil.getSqlSessionFactory();
        if(factory != null){
            session = factory.openSession();
        }
    }

    @Test
    public void insert(){
        User user = new User();
        user.setUsername("張三");
        user.setPassword("zhangsan123");
        user.setAddress("上海市浦東新區周家渡");
        try {
            user.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("1990-08-03"));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        user.setZipcode("217651");
        user.setEmail("[email protected]");
        if(session != null){
            session.insert("mybatis.testcurd.insertUser",user);
        }
    }

    @Test
    public void testQueryById(){
        if(session != null){
            List<User> lists = session.selectList("mybatis.testcurd.queryUserInfoById", 1L);
            for(User user:lists){
                System.out.println("id:" + user.getId() + ",username:" + user.getUsername() + ",password:"+
                        user.getPassword() + ",address:" + user.getAddress() +
                        ",email:" + user.getEmail() + ",zipcode:" + user.getZipcode());
            }
        }
    }

    @Test
    public void testUpdateById(){
        User user = new User();
        user.setId(1);
        user.setUsername("張三三");
        if(session != null){
            session.update("mybatis.testcurd.updateUserById", user);
        }
    }

    @Test
    public void testDeleteById(){
        if(session != null){
            session.delete("mybatis.testcurd.deleteUserById",1l);
        }
    }

    //使用map來進行數據的增 刪 改 查
    @Test
    public void testInsertUserMap(){
        Map map = new HashMap();
        map.put("username", "lisi");
        map.put("password", "lisi123");
        map.put("address", "上海市黃浦區南京東路");
        map.put("email", "[email protected]");
        map.put("zipcode", "123456");
        try {
            map.put("birthday", new SimpleDateFormat("yyyy-MM-dd").parse("1990-08-02"));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        if(session != null){
            session.insert("mybatis.testcurd.insertUserByMap", map);
        }
    }
    //使用map進行查詢
    @Test
    public void testSelectUserByMap(){
        if(session != null){
            //查詢所有
            Map map = session.selectMap("mybatis.testcurd.selectUserByMap","username");
            Set<String> keys = map.keySet();
            for(String key:keys){
                Map mapValue = (Map) map.get(key);
                System.out.println("id:" + mapValue.get("ID") + ",username:" + mapValue.get("USERNAME") + ",password:"+
                        mapValue.get("PASSWORD") + ",address:" + mapValue.get("ADDRESS") +
                        ",email:" + mapValue.get("EMAIL") + ",zipcode:" + mapValue.get("ZIPCODE"));
            }
            Map condition = new HashMap();
            condition.put("id", 21);
            Map oneMap = session.selectMap("mybatis.testcurd.selectOneUserByMap", condition,"username");
            Set<String> oneMapKeys = map.keySet();
            for(String key:oneMapKeys){
                Map mapValue = (Map) map.get(key);
                System.out.println("id:" + mapValue.get("ID") + ",username:" + mapValue.get("USERNAME") + ",password:"+
                        mapValue.get("PASSWORD") + ",address:" + mapValue.get("ADDRESS") +
                        ",email:" + mapValue.get("EMAIL") + ",zipcode:" + mapValue.get("ZIPCODE"));
            }
        }
    }

    //使用map進行更新
    @Test
    public void testUpdateUserByMap(){
        Map map = new HashMap();
        map.put("id",22);
        map.put("username", "李四");
        if(session != null){
            session.update("mybatis.testcurd.updateUserByMap", map);
        }
    }

    @Test
    public void testDeleteUserByMap(){
        Map map = new HashMap();
        map.put("id",22);
        if(session != null){
            session.delete("mybatis.testcurd.deleteUserByMap",map);
        }
    }

    @After
    public void after(){
        if(session != null){
            session.commit();//session需要commit 否則無法盡心提交
            session.close();
        }
    }

4、mybatis的結構如下圖所示:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章