欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Spring的JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate

一、JdbcTemplate 

查詢(xún)帶有參數,和行映射方法:

public Object queryForObject(String sql, Object[] args, RowMapper rowMapper),使用自定義的UserRowMapper完成映射。
一個(gè)RowMapper的常用實(shí)現BeanPropertyRowMapper,該實(shí)現可將結果集轉換成一個(gè)Java Bean(字段名與Java Bean屬性名不符合規范,可用別名處理)。
public List query(String sql, Object[] args, RowMapper rowMapper)返回多個(gè)結果。
public int queryForInt(String sql)(如:select count(*) from user),其他結果比如String可用queryForObject方法向下轉型。
public Map queryForMap(String sql, Object[] args)返回若類(lèi)型的Map(key:字段名或別名,value:列值)。
public List queryForList(String sql, Object[] args)返回多Map。
 更新public int update(String sql, Object[] args)。
插入數據并獲得結果:
public Object execute(ConnectionCallback action)
其他方法簡(jiǎn)介
 

public class JdbcTemplateTest {
  // JdbcTemplate是線(xiàn)程安全的
 static JdbcTemplate jdbc = new JdbcTemplate(JdbcUtils.getDataSource());
 public static void main(String[] args) {
  User user = findUser("zhangsan");
  // System.out.println("user:" + user);
  // System.out.println("users:" + findUsers(3));
  // System.out.println("user count:" + getUserCount());
  // System.out.println("user name:" + getUserName(1));
  System.out.println("data:" + getData(1));
 }
 static int addUser(final User user) {
  jdbc.execute(new ConnectionCallback() {
   public Object doInConnection(Connection con) throws SQLException,
     DataAccessException {
    String sql = "insert into user(name,birthday, money) values (?,?,?) ";
    PreparedStatement ps = con.prepareStatement(sql,
      Statement.RETURN_GENERATED_KEYS);
    ps.setString(1, user.getName());
    ps.setDate(2, new java.sql.Date(user.getBirthday().getTime()));
    ps.setFloat(3, user.getMoney());
    ps.executeUpdate();
    ResultSet rs = ps.getGeneratedKeys();
    if (rs.next())
     user.setId(rs.getInt(1));
    return null;
   }
  });
  return 0;
 }
 static Map getData(int id) {
  String sql = "select id as userId, name, money, birthday  from user where id="
    + id;
  return jdbc.queryForMap(sql);
 }
 static String getUserName(int id) {
  String sql = "select name from user where id=" + id;
  Object name = jdbc.queryForObject(sql, String.class);
  return (String) name;
 }
 static int getUserCount() {
  String sql = "select count(*) from user";
  return jdbc.queryForInt(sql);
 }
 static List findUsers(int id) {
  String sql = "select id, name, money, birthday  from user where id<?";
  Object[] args = new Object[] { id };
  int[] argTypes = new int[] { Types.INTEGER };
  List users = jdbc.query(sql, args, argTypes, new BeanPropertyRowMapper(
    User.class));
  return users;
 }
 static User findUser(String name) {
  String sql = "select id, name, money, birthday  from user where name=?";
  Object[] args = new Object[] { name };
   // BeanPropertyRowMapper行映射器,只要查詢(xún)的字段名與類(lèi)名一樣就行(對于不同的可以使用別名 as xxx),對于不同命名規范它也會(huì )進(jìn)行轉化,如它自動(dòng)將下劃線(xiàn)法轉化為駱?lè )宸?br style="margin: 0px; padding: 0px;">  Object user = jdbc.queryForObject(sql, args, new BeanPropertyRowMapper(
    User.class));
  return (User) user;
 }
 static User findUser1(String name) {
  String sql = "select id, name, money, birthday  from user where name=?";
  Object[] args = new Object[] { name };
  Object user = jdbc.queryForObject(sql, args, new RowMapper() {
   public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
    User user = new User();
    user.setId(rs.getInt("id"));
    user.setName(rs.getString("name"));
    user.setMoney(rs.getFloat("money"));
    user.setBirthday(rs.getDate("birthday"));
    return user;
   }
  });
  return (User) user;
 }
}

二、NamedParameterJdbcTemplate

lNamedParameterJdbcTemplate內部包含了一個(gè)JdbcTemplate,所以JdbcTemplate能做的事情NamedParameterJdbcTemplate都能干; NamedParameterJdbcTemplate相對于JdbcTemplate主要增加了參數可以命名的功能。
lpublic Object queryForObject(String sql, Map paramMap, RowMapper rowMapper)
lpublic Object queryForObject(String sql, SqlParameterSource paramSource, RowMapper rowMapper)
SqlParameterSource的兩個(gè)主要實(shí)現MapSqlParameterSource
和BeanPropertySqlParameterSource
lpublic int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder)保存數據獲得主鍵。
 

public class NamedJdbcTemplate {
  // JdbcTemplate是線(xiàn)程安全的
 static JdbcTemplate jdbc = new JdbcTemplate(JdbcUtils.getDataSource());
 static NamedParameterJdbcTemplate named = new NamedParameterJdbcTemplate(
   JdbcUtils.getDataSource());
 public static void main(String[] args) {
  User user=new User();
  user.setMoney(10);
  user.setId(2);
//  System.out.println(findUser(user));
  System.out.println(findUser1(user));
 }
 static void addUser(User user){
  String sql = "insert into user(name,birthday, money) values (:name,:birthday,:money) ";//:后的命名要與列名一致
  SqlParameterSource ps=new BeanPropertySqlParameterSource(user);//從user中取出數據,與sql語(yǔ)句中一一對應將數據換進(jìn)去
  KeyHolder keyHolder=new GeneratedKeyHolder();
  named.update(sql, ps, keyHolder);
  int id=keyHolder.getKey().intValue();//獲得主鍵
  user.setId(id);
  Map map=keyHolder.getKeys();
 }
 static User findUser1(User user) {
  String sql = "select id, name, money, birthday  from user where money>:money and id<:id";
  SqlParameterSource ps=new BeanPropertySqlParameterSource(user);
  Object u=named.queryForObject(sql, ps, new BeanPropertyRowMapper(User.class));
  return (User) u;
 }
 static User findUser(User user) {
  String sql = "select id, name, money, birthday  from user where money>:m and id<:id";
  Object[] args = new Object[] {user.getName(),user.getMoney(),user.getId() };
  Map params=new HashMap();
  params.put("m", user.getMoney());
  params.put("id", user.getId());
  Object u=named.queryForObject(sql, params, new BeanPropertyRowMapper(User.class));
  return (User) u;
 }

  三、 SimpleJdbcTemplate

SimpleJdbcTemplate內部包含了一個(gè)NamedParameterJdbcTemplate;所以NamedParameterJdbcTemplate能做的事情SimpleJdbcTemplate都能干,SimpleJdbcTemplate相對于NamedParameterJdbcTemplate主要增加了JDK5.0的泛型和可變長(cháng)度參數支持。
public <T> List<T> query(String sql, ParameterizedRowMapper<T> rm, Object... args)
public <T> T queryForObject(String sql, ParameterizedRowMapper<T> rm, SqlParameterSource args)
public <T> List<T> query(String sql, ParameterizedRowMapper<T> rm, SqlParameterSource args)
getJdbcOperations返回的是JdbcOperations(實(shí)現JdbcTemplate)
getNamedParameterJdbcOperations返回的是NamedParameterJdbcOperations(實(shí)現是NamedParameterJdbcTemplate)
 
public class UserDaoSpringImpl implements UserDao {
 private SimpleJdbcTemplate simpleJdbcTemplate=new SimpleJdbcTemplate(JdbcUtils.getDataSource());
 @Override
 public void addUser(User user) {
  String sql="insert into user (name,money,birthday) value (:name,:money,:birthday)";
  SqlParameterSource param=new BeanPropertySqlParameterSource(user);
  KeyHolder keyHolder=new GeneratedKeyHolder();
  this.simpleJdbcTemplate.getNamedParameterJdbcOperations().update(sql, param, keyHolder);
  user.setId(keyHolder.getKey().intValue());
 }
 @Override
 public User getUser(int userId) {
  String sql="selec id,name,money,birthday from where id=?";
  return this.simpleJdbcTemplate.queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(User.class), userId);
 }
 @Override
 public User findUser(String name, String password) {
  String sql="selec id,name,money,birthday from where name=?";
  return this.simpleJdbcTemplate.queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(User.class), name);
 }
 @Override
 public void update(User user) {
//  String sql="update user set name=?,birthday=?,money=? where id=?";
//  this.simpleJdbcTemplate.update(sql, user.getName(),user.getBirthday(),user.getMoney(),user.getId());
  String sql="update user set name=:name,birthday=:birthday,money=:money where id=:id";
  this.simpleJdbcTemplate.update(sql,new BeanPropertySqlParameterSource(user));
 }
 @Override
 public void delete(User user) {
  String sql="delete from user where id="+user.getId();
  this.simpleJdbcTemplate.update(sql, user.getId());
 }
}
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Spring中SimpleJdbcTemplate的用法實(shí)例(三)
Spring DAO支持
Spring JdbcTemplate類(lèi)的常用方法
Spring 中的JdbcTemplate使用_阿郎
JdbcTemplate學(xué)習筆記
4.Spring的數據庫開(kāi)發(fā)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久