SSM 增刪改查
阿新 • • 發佈:2019-02-07
一、配置檔案
<?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入門)
—————————————————————————————————————————————————–