Spring jdbc

1、配置NamedParameterJdbcTemplete,该对象可以使用具名参数,其没有无参的构造器,所以必须为其构造器指定参数
在xml文件中要加入



可以为参数起名字:
1、如果有多个参数,便于维护,不用再去对应位置直接对应参数名字就好

    public void testNamedParameterJdbcTemplate()
    {
        String sql="insert into employee(id,name,sex,dept_id) values(:npjtid,:npjtname,:npjtsex,:npjtsept_id)";
        Map<String,Object> paramMap=new HashMap<>();
        paramMap.put("npjtid",10);
        paramMap.put("npjtname","李小龙");
        paramMap.put("npjtsex","男");
        paramMap.put("npjtsept_id",1);
        namedParameterJdbcTemplate.update(sql, paramMap);
    }

使用具名参数时,可以使用update(String sql,SqlParameterSource paramSourse)方法
更新操作、
1、SQL语句中的参数名和类中的属性一致、
2、使用SqlParameterSource 的BeanPropertySqlParameterSource实现类作为参数

    public void testNamedParameterJdbcTemplate2()
    {
        String sql="insert into employee(id,name,sex,dept_id) "
                + "values(:id,:name,:sex,:dept_id)";
        Employee employee=new Employee();
        employee.setId(11);
        employee.setName("未");
        employee.setSex("男");
        employee.setDept_id(2);
        SqlParameterSource paramSource=new BeanPropertySqlParameterSource(employee);
        namedParameterJdbcTemplate.update(sql, paramSource);
        
    
    }

下面补充不使用具名参数的情况:

在不使用具名参数的时候我们要在我们的xml文件中加入这一个bean标签
我将他叫做jdbc模板

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
@Repository
public class UserDao {

	@Autowired
	private JdbcTemplate jdbcTemplate;

	@Autowired
	private NamedParameterJdbcTemplate npjTemplate;
//在Dao中我们声明出来一个jdbc模板
	
	public void insertUserInfo(SysUser su) {
		
		String sql = "insert into t_sys_user (user_name, passwd, salt, real_name, avatar, phone, "
				+ "email, gender, create_time) values (?, ?, ?, ?, ?, ?, ?, ?, now())";
		jdbcTemplate.update(sql, su.getUserName(), su.getPasswd(), su.getSalt(), su.getRealName(), 
				su.getAvatar(), su.getPhone(), su.getEmail(), su.getGender());
	}
	//上面就是不适用具名参数来进行值的注入,他将会受我们的?的顺序影响
	
	public void insertUserInfoByNJP(SysUser su) {
		String sql = "insert into t_sys_user (user_name, passwd, salt, real_name, avatar, phone, "
				+ "email, gender, create_time) values (:userName, :passwd, :salt, :realName, :avatar, :phone, :email, :gender, now())";
	//上面我们使用的是具名参数的形式来进行数据的插入
	//我们相当是给我们的插入数据进行了重新命名,命名之后我们我们就能够根据我们命名来进行
	//数据的插入
	//在map中将我们的命名和值进行对应,之后就是调用update进行更新操作
		Map<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put("userName", su.getUserName());
		paramMap.put("passwd", su.getPasswd());
		paramMap.put("salt", su.getSalt());
		paramMap.put("realName", su.getRealName());
		paramMap.put("avatar", su.getAvatar());
		paramMap.put("phone", su.getPhone());
		paramMap.put("email", su.getEmail());
		paramMap.put("gender", su.getGender());
		npjTemplate.update(sql, paramMap);
		
	}
	

	public SysUser getUserById(int userId) {
		
		String sql = "select * from t_sys_user where user_id = ?";
		return jdbcTemplate.query(sql, new Object[] {userId}, new BeanPropertyRowMapper<SysUser>(SysUser.class)).get(0);
		//不使用具名参数的形式来进行查询
		//注意返回的类型是一个类类型和其他的不一样
	}
	public void payByCard() {
		
//		Class.forName("");
		Connection conn = null;
//		conn = DriverManager.getConnection(url, user, password)
		Statement stat = conn.createStatement();
		conn.setAutoCommit(false);//手动提交数据
	//	stat.executeUpdate(sql); 
	//  stat.executeUpdate(sql) 
		if(错误) {
			conn.rollback();//回滚函数
			conn.commit();//执行函数
		}
	}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值