SpringDao操作——查询、增加方法

新建一个实体类User  (@Component注解,将一个对象放入容器中。)

新建一个接口UserDaoIface

package com.zhaoming.dao.iface;
import java.util.List;
import com.zhaoming.entity.User;
public interface UserDaoIface {
    public List<User> queryAll();
    public User addUser(User user);
}

新建一个实现类UserDaoImp

package com.zhaoming.dao.imp;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.jdbc.core.ConnectionCallback;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import com.zhaoming.dao.iface.UserDaoIface;
import com.zhaoming.entity.User;

@Repository

public class UserDaoImp implements UserDaoIface{

    @Resource
    JdbcTemplate jdbcTemplate;
    /*
    @Override
    public List<User> queryAll() {
        String sql = "select * from users";
        List<User> list = jdbcTemplate.query(sql, new RowMapper<User>() {  //匿名内部类

            public User mapRow(ResultSet rs, int arg1) throws SQLException {
                User user = new User(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4));
                return user;
            }
        });
*/
    //兰姆达表达式
    @Override
    public List<User> queryAll() {
        String sql = "select * from users";
        List<User> list = jdbcTemplate.query(sql, (RowMapper<User>) (rs,index)->
             new User(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4))
        );
        return list;
    }
    @Override
    public User addUser(User user) {
        String sql = "insert into users values(seq_uid.nextval,?,?,?)";
        User user0 = jdbcTemplate.execute((ConnectionCallback<User>) (connection) ->{

                PreparedStatement psmt = connection.prepareStatement(sql,new String[]{"id"});
                psmt.setString(1,user.getName() );
                psmt.setString(2, user.getPassword());
                psmt.setString(3, user.getTelephone());
                psmt.executeUpdate();
                ResultSet rs = psmt.getGeneratedKeys();
                if(rs.next())
                {
                    user.setId(rs.getInt(1));
                }
                return user;

        });
        return user0;
    }

}

测试

package com.zhaoming.userdao;

import java.util.List;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.zhaoming.dao.imp.UserDaoImp;
import com.zhaoming.entity.User;
import spring.config.DataSourceConfig;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {DataSourceConfig.class})
public class UserDaoTest {

    @Resource
    UserDaoImp userDao;
    public void testQuery(){
        List<User> list = userDao.queryAll();
        for (User user : list) {
            System.out.println(user.getName());
        }
    }

    @Test
    public void testAdd(){
        User user = new User(0, "admin", "123", "321");
        User user0 = userDao.addUser(user);
        System.out.println(user0.getId());
    }
}
时间: 2024-10-18 10:15:34

SpringDao操作——查询、增加方法的相关文章

一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句

如题: 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句不是一条关联查询语句. 例如: $list = $db->relation(true)->where($where)->order('blogid desc')->limit($Page->firstRow.','.$Page->listRows)->select(); $sql = $db->getLastSql(); 输出的sql语句为: SELE

NSTableView 表格操作:增加,删除,编辑(方法2)

NSTableView 表格操作:增加,删除,编辑(方法2) 在: NSWindowController 新建表单 (H,M,XIB三个文件+新建一个类放CellData) 1.不使用delegate 2.数据源直接是当前文件File's Owner 3.H继承NSTableView协议,将需要的几个函数放入 4.增加一个列表数据单元类 这个方法的特点是: 当新建立一个窗体,显示一个表格内容,不使用Deleget就少了一个类的2个文件,让程序简单化 操作步骤: STEP1 将NSTableVie

封装JDBC操作数据库的方法

自己动手封装java操作数据库的方法: 一:目录结构 二:所需依赖的第三方jar包 这里只需引入mysql-connector-java-5.1.8-bin.jar,mysql数据库驱动jar包 三:代码 1:和数据库进行交互,首先是数据源,获取连接,代码如下: 1 /** 2 * 3 */ 4 package com.hlcui.datasource; 5 6 import java.sql.Connection; 7 import java.sql.DriverManager; 8 impo

JqGrid相关操作备忘 方法列表

JqGrid相关操作备忘 方法列表 1.获得当前列表行数:$("#gridid").getGridParam("reccount"); 2.获取选中行数据(json):$("#gridid").jqGrid('getRowData', id); 3.刷新列表:$(refreshSelector).jqGrid('setGridParam', { url: ''), postData: ''}).trigger('reloadGrid'); 4.选

MySQL查询in操作 查询结果按in集合顺序显示_Mysql_脚本之家

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

Oracle 特殊字符模糊查询的方法

最近在写DAO层的时候,遇到一个问题,就是使用like进行模糊查询时,输入下划线,无法精确查到数据,而是返回所有的数据. 这让我很好奇,百度之后才发现,原来是因为有些特殊字符需要进行转义才可以进行查询. 首先理解一下什么是特殊字符. 在ascii码表中,特殊字符的范围如下.即从32~47 58~64 91~96 123~126. 模糊查询时,有两种方法可以进行转换. 1. 使用REGEXP_LIKE方法,这是个使用正则表达式来查询的方法,因此有此字符需要进行转义才能查询,如$ *等,转义符为反斜

ObjectQuery查询及方法

ObjectQuery 类支持对 实体数据模型 (EDM) 执行 LINQ to Entities 和 Entity SQL 查询.ObjectQuery 还实现了一组查询生成器方法,这些方法可用于按顺序构造等效于 Entity SQL 的查询命令.下面是 ObjectQuery 的查询生成器方法以及等效的 Entity SQL 语句: Distinct,Except,GroupBy,Intersect,OfType,OrderBy,Select,SelectValue,Skip,Top,Uni

用ADO操作数据库的方法步骤(ZT)

http://www.cppblog.com/changshoumeng/articles/113437.html 学习ADO时总结的一些经验 用ADO操作数据库的方法步骤 ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口. _ConnectionPtr接口返回一个记录集或一个空指针. 通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程.使用_ConnectionPtr接口返回一个

php操作oracle的方法类集全

在网上开始找php中操作oracle的方法类~ 果然找到一个用php+oracle制作email表以及插入查询的教程,赶忙点开来看,从头到尾仔细的看了一遍,还没开始操作,便觉得收获很大了.地址在此:http://www.alixixi.com/program/a/2008050731615.shtml#replay. http://blog.163.com/[email protected]/blog/static/27712393201131815035122/        (博客校园) 摘