春道(31) - 利用NamedParameterJdbcTemplateのデータベース操作が完了している(のJavaConfig構成)

背景

前のJdbcTemplateは、我々は、関連するBeanの構成は、XMLや注釈によって達成されている変更検索操作へのデータベースの追加および削除の次のインスタンスを完了しました。

JdbcTemplateは、クラスの名前、JdbcTemplateよりもエレガントを使用してパラメータを渡して、この記事の下で、我々はNamedParameterJdbcTemplateの使用を実証し、位置のプレースホルダパラメータによって渡されます。そして、この記事では、我々は、関連するBeanを構成するJavaConfigを使用し、あなたはJavaConfigのシンプルかつ強力なキャラクターを体験することができます。

コンフィギュレーション・クラスのNamedParameterJdbcTemplateソースと設定データ

私たちは、アセンブリおよび方法JavaConfig BeanConfigコードによって設定データソースをnamedParameterJdbcTemplate次のとおりです。

package org.maoge.nameddemo;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import com.alibaba.druid.pool.DruidDataSource;
@Configuration // 配置类
public class BeanConfig {
	// 配置数据源
	@Bean
	public DataSource dataSource() {
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/myblog?useUnicode=true&characterEncoding=utf-8");
		dataSource.setUsername("root");
		dataSource.setPassword("XXX");
		return dataSource;
	}
	// 配置namedParameterJdbcTemplate组件
	@Bean
	public NamedParameterJdbcTemplate namedParameterJdbcTemplate() {
		NamedParameterJdbcTemplate template=new NamedParameterJdbcTemplate(dataSource());//注入dataSource
		return template;
	}
}

組立データベース操作を実装BlogDao

データオブジェクトは変更されません。

package org.maoge.nameddemo;
/**
 * @theme 数据对象--博客
 * @author maoge
 * @date 2020-01-27
 */
public class BlogDo {
	private Long id;
	private String title;
	private String author;
	private String content;
	// 省略get get
}

次のように主なパラメータを変化させるために比べて、部品データを操作JdbcTemplateは、名前による質量の参加を参照して転写位置から渡され、参照が加えて不変渡すことがわかります。また、我々が直接JavaConfigがBeanとして構成することが従っているので、我々は、クラスでのアノテーションを使用していないことに注意してください。

package org.maoge.nameddemo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

/**
 * @theme DAO--博客
 * @author maoge
 * @date 2020-01-29
 */
public class BlogDao {
	public NamedParameterJdbcTemplate getNamedTemplate() {
		return namedTemplate;
	}

	public void setNamedTemplate(NamedParameterJdbcTemplate namedTemplate) {
		this.namedTemplate = namedTemplate;
	}

	private NamedParameterJdbcTemplate namedTemplate;


	/**
	 * 新增
	 */
	public void insert(BlogDo blog) {
		Map<String, Object> map = new HashMap<>();
		map.put("author", blog.getAuthor());
		map.put("content", blog.getContent());
		map.put("title", blog.getTitle());
		// 注意使用:xxx占位
		namedTemplate.update("insert into blog(author,content,title)values(:author,:content,:title)", map);
	}

	/**
	 * 删除
	 */
	public void delete(Long id) {
		Map<String, Object> map = new HashMap<>();
		map.put("id", id);
		namedTemplate.update("delete from blog where id =:id", map);
	}

	/**
	 * 更新
	 */
	public void update(BlogDo blog) {
		Map<String, Object> map = new HashMap<>();
		map.put("author", blog.getAuthor());
		map.put("content", blog.getContent());
		map.put("title", blog.getTitle());
		map.put("id", blog.getId());
		namedTemplate.update("update blog set author=:author,content=:content,title=:title where id=:id", map);
	}

	/**
	 * 按id查询
	 */
	public BlogDo getById(Long id) {
		Map<String, Object> map = new HashMap<>();
		map.put("id", id);
		return namedTemplate.queryForObject("select * from blog where id=:id", map, new RowMapper<BlogDo>() {
			@Override
			public BlogDo mapRow(ResultSet rs, int rowNum) throws SQLException {
				BlogDo blog = new BlogDo();
				blog.setAuthor(rs.getString("author"));
				blog.setContent(rs.getString("content"));
				blog.setId(rs.getLong("id"));
				blog.setTitle(rs.getString("title"));
				return blog;
			}
		});
	}

	/**
	 * 查询列表
	 */
	public List<BlogDo> getList() {
		return namedTemplate.query("select * from blog", new RowMapper<BlogDo>() {
			@Override
			public BlogDo mapRow(ResultSet rs, int rowNum) throws SQLException {
				BlogDo blog = new BlogDo();
				blog.setAuthor(rs.getString("author"));
				blog.setContent(rs.getString("content"));
				blog.setId(rs.getLong("id"));
				blog.setTitle(rs.getString("title"));
				return blog;
			}
		});
	}

}

BlogDaoは、Beanとして登録しました

次のように本明細書ビーンとしてレジスタによってJavaConfig BlogDaoは、namedParameterJdbcTemplate注入しながら、修正されたコードは次のとおりです。

package org.maoge.nameddemo;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import com.alibaba.druid.pool.DruidDataSource;
@Configuration // 配置类
public class BeanConfig {
	// 配置数据源
	@Bean
	public DataSource dataSource() {
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/myblog?useUnicode=true&characterEncoding=utf-8");
		dataSource.setUsername("root");
		dataSource.setPassword("Easy@0122");
		return dataSource;
	}
	// 配置namedParameterJdbcTemplate组件
	@Bean
	public NamedParameterJdbcTemplate namedParameterJdbcTemplate() {
		NamedParameterJdbcTemplate template=new NamedParameterJdbcTemplate(dataSource());//注入dataSource
		return template;
	}
	//为BlogDao注册bean
	@Bean
	public BlogDao blogDao() {
		BlogDao blogDao=new BlogDao();
		blogDao.setNamedTemplate(namedParameterJdbcTemplate());//注入namedParameterJdbcTemplate
		return blogDao;
	}
}

テスト

容器は、同じタイプではない構成に加えて、他の部分は同じです。

package org.maoge.nameddemo;
import java.sql.SQLException;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {
	public static void main(String[] args) throws SQLException {
		// 获取容器
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(BeanConfig.class);
		// 获取blogDao组件
		BlogDao blogDao = context.getBean("blogDao", BlogDao.class);
		BlogDo blog = new BlogDo();
		blog.setAuthor("猫哥");
		blog.setTitle("测试博客");
		blog.setContent("非常完美吭");
		// 测试插入
		blogDao.insert(blog);
		// 测试获取1个
		System.out.println(blogDao.getById(2L));
		// 测试获取列表
		System.out.println(blogDao.getList().size());
		blog.setId(3L);
		blog.setContent("非常完美吭XX");
		// 修改
		blogDao.update(blog);
		// 删除
		blogDao.delete(4L);
	}
}

概要

NamedParameterJdbcTemplateはずっといいデータベースのJdbcTemplate操作よりもです。

JavaConfigとコメントは、XMLコンフィグレーションBeanの方法よりも良いはずです、私は喉を感じました...

公開された345元の記事 ウォンの賞賛240 ビュー530 000 +

おすすめ

転載: blog.csdn.net/woshisangsang/article/details/104107622