Mybatis中sql映射文件中的增刪查改
映射文件內(nèi)的增刪查改
準(zhǔn)備工作
- 準(zhǔn)備一張數(shù)據(jù)表,用于進(jìn)行數(shù)據(jù)庫(kù)的相關(guān)操作。
- 新建maven工程, 導(dǎo)入mysql-connector-java和mybatis依賴(lài)。
- 新建一個(gè)實(shí)體類(lèi),類(lèi)的字段要和數(shù)據(jù)表的數(shù)據(jù)對(duì)應(yīng)
- 編寫(xiě)接口
- 編寫(xiě)mybatis主配置文件
public class User {
private String name;
private String gender;
private int age;
private String address;
private String email;
private String qq;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
}<?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"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>public class Main {
public static void main(String[] args) throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(resourceAsStream).openSession();
}
}后續(xù)只需在接口內(nèi)添加相關(guān)方法,編寫(xiě)mapper映射文件進(jìn)行測(cè)試,后面僅展示mapper映射文件。
新增數(shù)據(jù)
插入數(shù)據(jù)的方法sqlSession.insert("mapper映射文件內(nèi)insert標(biāo)簽的id","傳入的參數(shù)"),并且例如增刪改的方法需要調(diào)用commit方法進(jìn)行提交。
編寫(xiě)sql語(yǔ)句時(shí),如果輸入的參數(shù)為java對(duì)象類(lèi)型,#{}表示接收java對(duì)象的屬性名
<insert id="add" parameterType="com.cc.UserMapper" >
insert into tb_userinfo (name,gender,age,address,email,qq) values (#{name},#{gender},#{age},#{address},#{email},#{qq});
</insert>這里將user對(duì)象作為參數(shù)傳入。
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(resourceAsStream).openSession();
//插入數(shù)據(jù)
User user = new User("張四豐","女",25,"寧夏","1212@qq.com","987654");
sqlSession.insert("add",user);
sqlSession.commit();刪除數(shù)據(jù)
根據(jù)姓名刪除數(shù)據(jù):調(diào)用sqlSession.delete方法,同時(shí)傳入一個(gè)字符串。
sqlSession.delete("delete","張大2");
<delete id="delete" parameterType="String">
delete from tb_userinfo where name = #{na}
</delete>修改數(shù)據(jù)
當(dāng)要傳入多個(gè)參數(shù)時(shí),除了使用類(lèi)將數(shù)據(jù)封裝起來(lái),還能使用map集合作為參數(shù)傳入,注意map的key值要和#{}內(nèi)的值一致。
<update id="update" parameterType="map">
update tb_userinfo set gender=#{gender},address=#{address} where name=#{nam}
</update> Map<String,String> map = new HashMap<>();
map.put("gender","女");
map.put("nam","李思思");
map.put("address","四川");
sqlSession.update("update",map);
查詢(xún)數(shù)據(jù)
查詢(xún)所有
<select id="seleteAll" resultType="com.cc.User">
select * from tb_userinfo;
</select> List<User> users = sqlSession.selectList("seleteAll");
for(User u : users){
System.out.print(u.getName());
System.out.println(u.getAge());
}條件查詢(xún)
<select id="seleteByName" resultType="com.cc.User" parameterType="String">
select * from tb_userinfo where name = #{name}
</select> User user = sqlSession.selectOne("seleteByName", "李思思");
System.out.println(user.getGender());
System.out.println(user.getAddress());模糊查詢(xún)
<select id="seleteLike" resultType="com.cc.User" parameterType="String">
select * from tb_userinfo where name like #{name}
</select> User o = sqlSession.selectOne("seleteLike", "%大%");
System.out.println(o.getName());映射文件的相關(guān)補(bǔ)充
#{}與${}
#{}與${}都能夠接收輸入的參數(shù),區(qū)別是#{}表示一個(gè)占位符號(hào),${}表示一個(gè)拼接符號(hào),這樣會(huì)導(dǎo)致sql注入,因此不建議使用${}
parameterType和resultType
parameterType:指定輸入?yún)?shù)類(lèi)型,mybatis通過(guò)ognl從輸入對(duì)象中獲取參數(shù)值拼接在sql中。
resultType:指定輸出結(jié)果類(lèi)型,mybatis將sql查詢(xún)結(jié)果的一行記錄數(shù)據(jù)映射為resultType指定類(lèi)型的對(duì)象。
到此這篇關(guān)于Mybatis中sql映射文件中的增刪查改的文章就介紹到這了,更多相關(guān)Mybatis sql映射文件增刪查改內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot一鍵application.yml配置文件實(shí)踐
application-dev.yml文件是Spring Boot項(xiàng)目中用于定義開(kāi)發(fā)環(huán)境配置的一個(gè)YAML格式文件,它包含了數(shù)據(jù)庫(kù)連接、服務(wù)器端口、日志級(jí)別、緩存配置等開(kāi)發(fā)過(guò)程中常用的設(shè)置,通過(guò)這個(gè)文件,開(kāi)發(fā)者可以在不同的環(huán)境中(如開(kāi)發(fā)、測(cè)試、生產(chǎn))切換配置,而無(wú)需修改代碼2026-02-02
tk mybatis update各種類(lèi)型使用及說(shuō)明
文章總結(jié)了Java中使用MyBatis進(jìn)行數(shù)據(jù)更新的方法,包括根據(jù)example對(duì)象更新所有屬性或部分屬性,以及根據(jù)主鍵更新所有屬性或部分屬性的API使用和生成的SQL語(yǔ)句2026-04-04
Socket+JDBC+IO實(shí)現(xiàn)Java文件上傳下載器DEMO詳解
這篇文章主要介紹了Socket+JDBC+IO實(shí)現(xiàn)Java文件上傳下載器DEMO詳解,需要的朋友可以參考下2017-05-05
img 加載網(wǎng)絡(luò)圖片失敗 顯示默認(rèn)圖片的方法
下面小編就為大家?guī)?lái)一篇img 加載網(wǎng)絡(luò)圖片失敗 顯示默認(rèn)圖片的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
spring用戶(hù)通過(guò)交互界面登錄成功的實(shí)現(xiàn)
本文主要介紹了spring用戶(hù)通過(guò)交互界面登錄成功的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07

