新聞中心
在進(jìn)行軟件開發(fā)中,無論是Web開發(fā)還是移動(dòng)端開發(fā),我們一般都需要和數(shù)據(jù)庫打交道。而在數(shù)據(jù)庫操作中,主鍵ID是非常重要的一個(gè)屬性,因?yàn)樗ǔ1蛔鳛槲ㄒ粯?biāo)識(shí)符。因此,正確、高效的獲取數(shù)據(jù)庫中的ID十分關(guān)鍵。本文將介紹如何。

創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)沁源,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
一、S框架概述
S框架是由Spring、SpringMVC、MyBatis三個(gè)框架整合而成的一個(gè)Web應(yīng)用框架。其中,Spring主要負(fù)責(zé)管理應(yīng)用的Bean對(duì)象,SpringMVC負(fù)責(zé)處理請(qǐng)求和響應(yīng),MyBatis負(fù)責(zé)映射Java對(duì)象和關(guān)系型數(shù)據(jù)庫表。S框架具有輕量級(jí)、配置簡單、易于理解等優(yōu)點(diǎn),因此在許多項(xiàng)目中得到了廣泛應(yīng)用。
二、高效獲取數(shù)據(jù)庫中的ID
1.優(yōu)化MySQL數(shù)據(jù)庫的主鍵類型
MySQL數(shù)據(jù)庫提供多種主鍵類型,包括INT、BIGINT、UUID等。在一般情況下,我們使用INT作為主鍵類型,它可以存儲(chǔ)范圍為-2^31到2^31-1的整數(shù)。如果需要存儲(chǔ)更大的整數(shù),可以選擇BIGINT類型。如果需要在分布式環(huán)境下生成唯一標(biāo)識(shí)符,可以選擇UUID類型。在實(shí)際開發(fā)中,建議根據(jù)項(xiàng)目需求來選擇合適的主鍵類型。
2.通過MyBatis Generator生成ID
MyBatis Generator是一個(gè)自動(dòng)生成MyBatis框架代碼的工具,它可以自動(dòng)生成DAO(數(shù)據(jù)訪問對(duì)象)、Mapper(數(shù)據(jù)訪問映射器)和Model(數(shù)據(jù)模型)等Java類。其中,Mapper接口封裝了數(shù)據(jù)庫的操作方法。在Mapper中,我們可以通過以下方式來獲取自動(dòng)生成的ID:
“`
SELECT LAST_INSERT_ID()
INSERT INTO user(username,password)
VALUES(#{username},#{password})
“`
其中,selectKey標(biāo)簽用于獲取自動(dòng)生成的ID,keyProperty屬性用于指定ID對(duì)應(yīng)的Java屬性名稱,resultType屬性用于指定ID的類型,order屬性用于指定獲取ID的順序。這種方式可以大幅提高獲取ID的效率。
3.通過JDBC獲取自增ID
如果沒有使用MyBatis Generator生成代碼,可以通過JDBC的PreparedStatement對(duì)象來獲取自增ID,具體代碼如下:
“`
try(Connection conn = dataSource.getConnection()) {
String sql = “INSERT INTO user(username,password) VALUES(?,?)”;
PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, “admin”);
ps.setString(2, “123456”);
ps.executeUpdate();
try(ResultSet rs = ps.getGeneratedKeys()) {
if(rs.next()) {
int id = rs.getInt(1);
// 獲取自增ID
}
}
}
“`
其中,Statement.RETURN_GENERATED_KEYS表示返回自動(dòng)生成的ID。在執(zhí)行完SQL語句后,可以通過PreparedStatement對(duì)象的getGeneratedKeys()方法獲取自動(dòng)生成的ID。
三、S框架應(yīng)用實(shí)例
考慮一個(gè)簡單的用戶管理系統(tǒng),包括用戶的添加、查詢、修改和刪除等操作。在數(shù)據(jù)庫中,我們建立一個(gè)user表,包括id、username和password三個(gè)字段。接下來,我們將基于S框架實(shí)現(xiàn)用戶管理系統(tǒng),并演示如何獲取數(shù)據(jù)庫中的ID。
1.創(chuàng)建項(xiàng)目
使用Maven創(chuàng)建一個(gè)S框架項(xiàng)目,具體步驟省略。
2.配置POM文件
在POM文件中添加Spring、SpringMVC和MyBatis等依賴。
“`
org.springframework
spring-context
5.3.5
org.springframework
spring-webmvc
5.3.5
org.mybatis
mybatis
3.5.6
mysql
mysql-connector-java
8.0.23
“`
3.配置數(shù)據(jù)源
在Spring配置文件中配置數(shù)據(jù)源,具體配置方式參見MyBatis官方文檔。
4.創(chuàng)建Mapper
創(chuàng)建UserMapper接口,定義user表的增、刪、改、查方法。
“`
public interface UserMapper {
int insert(User user);
int delete(int id);
int update(User user);
User selectById(int id);
List selectAll();
}
“`
其中,User為實(shí)體類,包含id、username和password三個(gè)屬性。
5.創(chuàng)建XML文件
創(chuàng)建UserMapper對(duì)應(yīng)的XML文件,包含SQL語句和映射規(guī)則。在Mapper XML文件中,我們可以通過以下方式來獲取自動(dòng)生成的ID。
“`
SELECT nextval(‘user_id_seq’)
INSERT INTO user(id,username,password)
VALUES(#{id},#{username},#{password})
“`
其中,nextval(‘user_id_seq’)用于獲取當(dāng)前序列號(hào),BEFORE表示在插入前獲取自動(dòng)生成的ID。在插入完成后,id屬性會(huì)自動(dòng)賦值為自動(dòng)生成的ID。
6.創(chuàng)建Service
創(chuàng)建UserService服務(wù),對(duì)UserMapper進(jìn)行封裝。
“`
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public int addUser(User user) {
return userMapper.insert(user);
}
public int deleteUser(int id) {
return userMapper.delete(id);
}
public int updateUser(User user) {
return userMapper.update(user);
}
public User getUserById(int id) {
return userMapper.selectById(id);
}
public List getAllUser() {
return userMapper.selectAll();
}
}
“`
其中,@Service注解表示該類為Spring容器中的Bean對(duì)象,@Autowired注解表示自動(dòng)注入U(xiǎn)serMapper。
7.創(chuàng)建Controller
創(chuàng)建UserController控制器,處理HTTP請(qǐng)求和響應(yīng)。
“`
@Controller
@RequestMapping(value=”/user”)
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value=”/add”,method=RequestMethod.POST)
public String addUser(HttpServletRequest request) {
String username = request.getParameter(“username”);
String password = request.getParameter(“password”);
User user = new User();
user.setUsername(username);
user.setPassword(password);
userService.addUser(user);
return “redirect:/user/list”;
}
}
“`
其中,@Controller注解表示該類為SpringMVC的控制器,@RequestMapping注解表示URL的映射關(guān)系。在addUser方法中,我們通過HttpServletRequest對(duì)象獲取請(qǐng)求參數(shù),并將其封裝為User對(duì)象,最后調(diào)用UserService的addUser方法實(shí)現(xiàn)用戶的添加。
8.實(shí)驗(yàn)驗(yàn)證
配置Tomcat服務(wù)器,啟動(dòng)項(xiàng)目,并使用Postman測(cè)試用戶信息的添加和查詢操作。
“`
// 添加用戶
POST http://localhost:8080/user/add
Body:
username=admin&password=123456
// 查詢用戶
GET http://localhost:8080/user/list
“`
在MySQL數(shù)據(jù)庫中查看user表,可以發(fā)現(xiàn)ID自動(dòng)增長,并正確地添加到數(shù)據(jù)庫中。
四、
相關(guān)問題拓展閱讀:
- 如何從ListView中獲得數(shù)據(jù)庫記錄的Id,并刪除
如何從ListView中獲得數(shù)據(jù)庫記錄的Id,并刪除
直接通過笑指cursor指向當(dāng)前的Item,然后獲取當(dāng)前數(shù)鎮(zhèn)培據(jù)記錄的id,調(diào)用delete方法就可以了,delete方法如下public void delete(long rowId) { String sql = “DELETE FROM ” + DB_TABLENAME + ” WHERE “御升唯 + KEY_ROWID + “=” + rowId; try { dbInstance.execSQL(sql); Log.i(“刪除”,”成功刪除記錄”+rowId); } catch(SQLException e) { Log.i(“刪除”,”刪除記錄失敗”); } }
牛帖,這里必須頂起。
s框架獲取數(shù)據(jù)庫中的id的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于s框架獲取數(shù)據(jù)庫中的id,通過S框架實(shí)現(xiàn)高效獲取數(shù)據(jù)庫中的ID,如何從ListView中獲得數(shù)據(jù)庫記錄的Id,并刪除的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價(jià)格厚道的香港/美國云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動(dòng)、聯(lián)通等。
網(wǎng)頁標(biāo)題:通過S框架實(shí)現(xiàn)高效獲取數(shù)據(jù)庫中的ID(s框架獲取數(shù)據(jù)庫中的id)
文章出自:http://m.fisionsoft.com.cn/article/dhhcppo.html


咨詢
建站咨詢
