1. 程式人生 > >SSM 增刪改查

SSM 增刪改查

一、配置檔案

<?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開發dao方式,使用namespace有特殊作用
mapper代理開發時將namespace指定為mapper介面的全限定名
 -->
<mapper namespace="test"
>
<!-- 在mapper.xml檔案中配置很多的sql語句,執行每個sql語句時,封裝為MappedStatement物件 mapper.xml以statement為單位管理sql語句 --> <!-- 根據id查詢使用者資訊 --> <!-- id:唯一標識 一個statement #{}:表示 一個佔位符,如果#{}中傳入簡單型別的引數,#{}中的名稱隨意 parameterType:輸入 引數的型別,通過#{}接收parameterType輸入 的引數 resultType:輸出結果 型別,不管返回是多條還是單條,指定單條記錄對映的pojo型別 -->
<select id="findUserById" parameterType="int" resultType="com.oppo.scm.entity.User"> SELECT * FROM USER WHERE id= #{id} </select> <!-- 根據使用者名稱稱查詢使用者資訊,可能返回多條 ${}:表示sql的拼接,通過${}接收引數,將引數的內容不加任何修飾拼接在sql中。 --> <select id="findUserByName" parameterType
="java.lang.String" resultType="com.oppo.scm.entity.User">
select * from user where username like '%${value}%' </select> <!-- 新增使用者 parameterType:輸入 引數的型別,User物件 包括 username,birthday,sex,address #{}接收pojo資料,可以使用OGNL解析出pojo的屬性值 #{username}表示從parameterType中獲取pojo的屬性值 selectKey:用於進行主鍵返回,定義了獲取主鍵值的sql order:設定selectKey中sql執行的順序,相對於insert語句來說 keyProperty:將主鍵值設定到哪個屬性 resultType:select LAST_INSERT_ID()的結果 型別 --> <insert id="insertUser" parameterType="com.oppo.scm.entity.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> <!-- mysql的uuid生成主鍵 --> <!-- <insert id="insertUser" parameterType="com.oppo.scm.entity.User"> <selectKey keyProperty="id" order="BEFORE" resultType="string"> select uuid() </selectKey> INSERT INTO USER(id,username,birthday,sex,address) VALUES(#{id},#{username},#{birthday},#{sex},#{address}) </insert> --> <!-- oracle 在執行insert之前執行select 序列.nextval() from dual取出序列最大值,將值設定到user物件 的id屬性 --> <!-- <insert id="insertUser" parameterType="com.oppo.scm.entity.User"> <selectKey keyProperty="id" order="BEFORE" resultType="int"> select 序列.nextval() from dual </selectKey> INSERT INTO USER(id,username,birthday,sex,address) VALUES(#{id},#{username},#{birthday},#{sex},#{address}) </insert> --> <!-- 使用者刪除 --> <delete id="deleteUser" parameterType="int"> delete from user where id=#{id} </delete> <!-- 使用者更新 要求:傳入的user物件中包括 id屬性值 --> <update id="updateUser" parameterType="com.oppo.scm.entity.User"> update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id} </update> </mapper>

二、實現方法

package com.oppo.scm.user;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
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.ibatis.common.resources.Resources;
import com.oppo.scm.entity.User;

public class MyBatisFirst {

    public SqlSessionFactory sqlSessionFactory;

    @Before
    public void init() {
        String resource = "SqlMapConfig.xml";
        try {
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void findUser() {
        SqlSession session = sqlSessionFactory.openSession();
        try {
            User user = session.selectOne("test.findUserById", 1);
            System.out.println("user===" + user.getUsername());
        } catch (Exception e) {
            session.close();
            e.printStackTrace();
        }

    }

    @Test
    public void findUserByName() {
        SqlSession session = sqlSessionFactory.openSession();
        try {
            List<User> users = session.selectList("test.findUserByName", "tom");
            System.out.println("user===" + users.get(0));
        } catch (Exception e) {
            session.close();
            e.printStackTrace();
        }

    }

    @Test
    public void add() {
        SqlSession session = sqlSessionFactory.openSession();
        try {
            User user = new User();
            user.setUsername("lily1");
            user.setAddress("heinan");
            user.setPassword("112");
            user.setSex("girl");
            session.insert("test.insertUser", user);
            // 提交事件
            session.commit();

            System.out.println("id====" + user.getId());
        } catch (Exception e) {
            session.close();
            e.printStackTrace();
        }

    }

    @Test
    public void del() {
        SqlSession session = sqlSessionFactory.openSession();
        try {
            session.delete("test.deleteUser", 1);
            // 需要提交事務
            session.commit();
        } catch (Exception e) {
            session.close();
            e.printStackTrace();
        }
    }

    @Test
    public void update() {
        SqlSession session = sqlSessionFactory.openSession();
        try {
            User user = new User();
            user.setId(3);
            user.setUsername("mayun");
            user.setAddress("heinan");
            user.setPassword("112");
            user.setSex("girl");
            session.insert("test.updateUser", user);
            // 提交事件
            session.commit();

            System.out.println("id====" + user.getId());
        } catch (Exception e) {
            session.close();
            e.printStackTrace();
        }

    }
}

—————————————————————————————————————————————————–

java 架構師全套教程,共760G, 讓你從零到架構師,每月輕鬆拿3萬

下載地址:

https://item.taobao.com/item.htm?spm=686.1000925.0.0.4a155084hc8wek&id=555888526201

01.高階架構師四十二個階段高
02.Java高階系統培訓架構課程148課時
03.Java高階網際網路架構師課程
04.Java網際網路架構Netty、Nio、Mina等-視訊教程
05.Java高階架構設計2016整理-視訊教程
06.架構師基礎、高階片
07.Java架構師必修linux運維繫列課程
08.Java高階系統培訓架構課程116課時
(送:hadoop系列教程,java設計模式與資料結構, Spring Cloud微服務, SpringBoot入門)
—————————————————————————————————————————————————–