VereORM 之 原生 SQL

http://www.verejava.com/?id=1709328430411

1. 安装见  VereORM 之 入门安装 

2.在 test/src 中新建一个 测试类  com.test.orm.Test6   

package com.test.orm;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import com.test.entity.User;
import com.vere.orm.db.Session;
import com.vere.orm.db.SessionManager;
import com.vere.orm.util.CDate;

public class Test6 {

	public static void main(String[] args) {
		testAdd();
		
		testFindOne();
		
		testUpdate();
		
		testFind();
		
		testDelete();
	}
	
	public static void testAdd()
	{
		SessionManager sessionManager=new SessionManager();//创建session 工厂
		Session session= sessionManager.openSesstion();  //打开一个session
		try
		{
			User user=new User();
			user.setId(2);
			user.setName("lijun");
			user.setAge(30);
			user.setSalary(20000);
			user.setBirthday(Calendar.getInstance());

			String sql="insert into user(id,name,age,salary,birthday)values(?,?,?,?,?)";
			Object[] params=new Object[]{user.getId(),user.getName(),user.getAge(),user.getSalary(),user.getBirthday()};
			
			session.executeUpdate(sql, params);
			
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			if(session!=null)
			{
				session.close();//关闭session
			}
		}
	}
	
	public static void testFindOne()
	{
		SessionManager sessionManager=new SessionManager();//创建session 工厂
		Session session= sessionManager.openSesstion();  //打开一个session
		User user=null;
		try
		{
			String sql="select * from user where id=1";
			ResultSet rs=session.executeQuery(sql);
			
			/*String sql="select * from user where id=?";
			Object[] params=new Object[]{1};
			ResultSet rs=session.executeQuery(sql,params);*/
			
			if(rs.next())
			{
				user=new User();
				user.setId(rs.getInt("id"));
				user.setName(rs.getString("name"));
				user.setAge(rs.getInt("age"));
				user.setSalary(rs.getFloat("salary"));
				user.setBirthday(CDate.formatDateTime(rs.getString("birthday")));
				
				System.out.println(user.getId()+" | "+user.getName()+" | "+user.getAge()+" | "+user.getSalary());
			}
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			if(session!=null)
			{
				session.close();//关闭session
			}
		}
		
	}
	
	public static void testUpdate()
	{
		SessionManager sessionManager=new SessionManager();//创建session 工厂
		Session session= sessionManager.openSesstion();  //打开一个session
		try
		{
			User user=new User();
			user.setId(2);
			user.setName("lijun");
			user.setAge(30);
			user.setSalary(25000);
			user.setBirthday(Calendar.getInstance());

			String sql="update user set name=?,age=?,salary=?,birthday=? where id=?";
			Object[] params=new Object[]{user.getName(),user.getAge(),user.getSalary(),user.getBirthday(),user.getId()};
			
			session.executeUpdate(sql, params);
			
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			if(session!=null)
			{
				session.close();//关闭session
			}
		}
	}
	
	public static void testFind()
	{
		SessionManager sessionManager=new SessionManager();//创建session 工厂
		Session session= sessionManager.openSesstion();  //打开一个session
		List<User> userList=new ArrayList<User>();
		try
		{
			String sql="select * from user ";
			ResultSet rs=session.executeQuery(sql);
			
			
			while(rs.next())
			{
				User user=new User();
				user.setId(rs.getInt("id"));
				user.setName(rs.getString("name"));
				user.setAge(rs.getInt("age"));
				user.setSalary(rs.getFloat("salary"));
				user.setBirthday(CDate.formatDateTime(rs.getString("birthday")));
				
				userList.add(user);
			}
			
			for(int i=0;i<userList.size();i++)
			{
				User user=(User)userList.get(i);
				System.out.println(user.getId()+" | "+user.getName()+" | "+user.getAge()+" | "+user.getSalary());
			}
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			if(session!=null)
			{
				session.close();//关闭session
			}
		}
		
	}
	
	public static void testDelete()
	{
		SessionManager sessionManager=new SessionManager();//创建session 工厂
		Session session= sessionManager.openSesstion();  //打开一个session
		try
		{
			
			String sql="delete from user  where id=1";
			Object[] params=new Object[]{1};

			/*String sql="delete from user  where id=?";
			Object[] params=new Object[]{1};*/
			
			session.executeUpdate(sql);
			
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			if(session!=null)
			{
				session.close();//关闭session
			}
		}
	}
	
	
}



9.运行 com.test.orm.Test6 类 

将会看到结果

http://www.verejava.com/?id=1709328430411

### 如何使用原生SQL进行数据库查询和操作 #### 原生SQL的安全性和注意事项 在执行原生SQL查询时,安全性是一个重要的考虑因素。为了防止SQL注入攻击,建议始终使用参数化查询而不是直接拼接用户输入的数据[^1]。此外,不同数据库系统的语法可能存在差异,因此需要确保编写的SQL语句可以在目标数据库中正常运行。 #### Django中的原生SQL查询 在Django框架中,可以通过`connection.cursor()`方法来执行原生SQL查询。下面展示了一个简单的例子: ```python from django.db import connection def execute_raw_sql(): with connection.cursor() as cursor: cursor.execute("SELECT id, name FROM some_table WHERE status = %s", ['active']) rows = cursor.fetchall() return rows ``` 上述代码展示了如何通过参数化查询来避免SQL注入风险,并获取查询结果[^4]。 #### SQLAlchemy中的原生SQL查询 对于使用SQLAlchemy的情况,可以借助`text`函数来执行原生SQL查询。以下是无参数查询的一个实例: ```python from sqlalchemy import text sql = 'SELECT machine_room_name, type FROM machine_room LIMIT 2' result = session.execute(text(sql)) for row in result: print(row) ``` 此代码片段说明了如何利用SQLAlchemy的`execute`方法配合`text`对象完成查询任务[^2]。 #### Spring Boot整合JDBC与原生SQL Spring Boot项目也可以方便地集成JdbcTemplate来进行原生SQL的操作。这里给出一个基础示例: ```java import org.springframework.jdbc.core.JdbcTemplate; import java.util.List; public class UserRepository { private final JdbcTemplate jdbcTemplate; public List<String> findUserNamesByStatus(String status) { String sql = "SELECT username FROM users WHERE account_status = ?"; return this.jdbcTemplate.queryForList(sql, String.class, status); } } ``` 该Java类定义了一个方法用于根据账户状态筛选用户名列表[^5]。 ### 性能考量 尽管原生SQL有时会提供更高的灵活性和效率,但在实际应用前仍需对其性能表现做出合理评估并与ORM方式对比分析[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值