jdbctemplate

passing different types of arguments to jdbctemplate query

谁说我不能喝 提交于 2020-05-09 01:24:08
问题 I am trying to retrieve records from the database by using where clause with few different types of arguments. This is the simple method which I wrote where I am passing breedId and gender as an arguments. public List<Dog> listByBreedIdAndGender(long breedId, String gender) { return query("SELECT * FROM dog_entity WHERE breed__id = ? AND gender = ?", new MapSqlParameterSource(":breedId", breedId) .addValue(":gender", gender)); } private List<Dog> query(String sql, MapSqlParameterSource

Spring JDBC最佳实践(3)

喜你入骨 提交于 2020-04-30 00:12:22
spring jdbc包提供了JdbcTemplate和它的两个兄弟SimpleJdbcTemplate和NamedParameterJdbcTemplate,我们可以先从JdbcTemplate入手,领略一下这个类的便利和优雅。 1、使用JdbcTemplate进行数据访问: 初始化JdbcTemplate 初始化JdbcTemplate很容易,只需要向它的构造方法传入它所使用的DataSource便可以。如果使用Jakarta Commons DBCP,那么初始化代码如下所示: BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost/mysql?characterEncoding=gb2312"); dataSource.setUsername("***"); dataSource.setPassword("***"); JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); 也可以通过无参的构造方法构造JdbcTemplate,然后通过setDataSource

Spring学习---jdbcTemplate之sql参数注入

你。 提交于 2020-04-06 19:00:30
转来: 【spring】jdbcTemplate之sql参数注入 demo @Repository("jdbcDao") public class JdbcTemplateDao { @Autowired private JdbcTemplate jdbcTemplate; @Autowired private NamedParameterJdbcTemplate namedTemplate; private final static List<String> names = new ArrayList<String>(); private final String childAge = "5"; private final String parentId = "2"; static { names.add("吴三"); names.add("吴二"); } } <bean id="dataSource" ...> </bean > <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" abstract="false" lazy-init="false" autowire="default" > <property name="dataSource" ref="dataSource"/>

设计模式-模板方法模式

匆匆过客 提交于 2020-04-06 17:31:03
模板方法(Template Method)模式的定义:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式. 其优点有: 封装了不变部分,扩展可变部分。 在父类中提取了公共的部分代码,便于代码复用。 部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。 模式结构 模板方法模式包含以下主要角色: 抽象类:负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。 具体子类:实现抽象类中所定义的抽象方法和钩子方法,它们是一个顶级逻辑的一个组成步骤。 源码导读 模板方法模式一般以“XXXtemplate”这种方式来命名,像我们所熟知的 JdbcTemplate 就是采用模板方法模式设计的。 我们先看不使用 JdbcTemplate 是怎么查询的: try{ Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "1234"); String sql = "select nickname,comment,age from users"; statement =

设计模式-模板方法模式

旧巷老猫 提交于 2020-04-03 10:40:00
模板方法(Template Method)模式的定义:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式. 其优点有: 封装了不变部分,扩展可变部分。 在父类中提取了公共的部分代码,便于代码复用。 部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。 模式结构 模板方法模式包含以下主要角色: 抽象类:负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。 具体子类:实现抽象类中所定义的抽象方法和钩子方法,它们是一个顶级逻辑的一个组成步骤。 源码导读 模板方法模式一般以“XXXtemplate”这种方式来命名,像我们所熟知的 JdbcTemplate 就是采用模板方法模式设计的。 我们先看不使用 JdbcTemplate 是怎么查询的: try{ Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "1234"); String sql = "select nickname,comment,age from users"; statement =

记录一次批量插入的优化历程

拥有回忆 提交于 2020-04-02 19:36:44
一、前言 测试妹子反馈了一个bug,说后台报了个服务器异常——保存一个数量比较大的值时,比如 9999,一直在转圈圈,直到最后报了一个服务器异常。我接过了这个bug,经过仔细查看代码后发现,代码卡在了一个批量插入的SQL语句上,就是比如前端保存 9999 的时候,后端的业务逻辑要进行 9999 次的批量插入。 二、方案一 最开始的SQL语句是这样的,传入一个List,由MyBatis 处理这个 List 拼接成一个SQL语句并执行,看着也没有什么大问题呀! INSERT INTO yy_marketing_coupon ( uuid, no, name, type, money, status, instruction, astrict, total_number, remain_number, send_mode, get_mode, use_mode, user_rank_lower, send_start_time, send_end_time, use_start_time, use_end_time, use_expire_time, discount, user_mobiles, create_time, creater, update_time, updater, appid, use_car_type, highest_money, term_type,

WebServlet list for logged users [duplicate]

时光怂恿深爱的人放手 提交于 2020-03-25 18:48:32
问题 This question already has answers here : Spring - Invalid argument value: java.io.NotSerializableException (6 answers) Closed 12 days ago . I'm trying to create a list of medicines so that the user who added the medicines could see them and only him and that he wouldn't see the medicines of other users. But when I log in on accout which have 2 medicines added to databese and I visit my servlet /mlist i see "No drugs on the list" because to my user_id is assigned 0 and i don't get it why. /

Spring注解 - TX 声明式事务

蓝咒 提交于 2020-03-21 20:11:25
环境搭建 导入maven依赖 <!--spring提供的数据库操作工具--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.0.2.RELEASE</version> </dependency> <!--c3p0 数据库连接池--> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.5</version> </dependency> <!--mysql连接器--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.48</version> </dependency> 配置数据库相关信息 @Configuration @ComponentScan("com.spring.tx") public class TxConfig { /** * 配置数据源 */ @Bean public DataSource dataSource() throws

How to search string LIKE 'something%' with Java Spring Framework?

心已入冬 提交于 2020-03-17 06:49:05
问题 I've got a MySQL table with Foos. Each Foo has a numeric non-unique code and a name. Now I need to find if any Foo with one of certain codes happens to have a name that starts with a given string. In normal SQL this would be trivial: select * from FOO where CODE in (2,3,5) and NAME like 'bar%'; But how would I properly do this in Spring now? Without the need for the 'like' operator I'd do it like this: public List<Foo> getByName(List<Integer> codes, String namePart) { String sql = "select *

SpringのJdbcTemplate(四)

旧时模样 提交于 2020-03-16 18:12:23
一、JdbcTemplate概要 1.1、JdbcTemplate简介   JdbcTemplate的本质是一个对数据库操作的工具,和apache的DButil一样,都是对数据库进行更方便的操作。JdbcTemplate是Spring框架在jdbc上面做了一定的封装,使用spring的注入功能,将DataSource注册到JdbcTemplate之中。 优点 : 1、将jdbc创意创建连接、语句对象、设置SQL参数,释放资源等一系列操作封装到JdbcTemplate工具中,简化了代码量,使用方便简单。 2、运行期:高效、内嵌Spring框架中、支持基于AOP的声明式事务 缺点 :必须于Spring框架结合在一起使用、不支持数据库跨平台、默认没有缓存 1.2、JdbcTemplate提供的方法   JdbcTemplate位于中 spring-jdbc-x.x.x .RELEASE.jar 中。其全限定命名为org.springframework.jdbc.core.JdbcTemplate。要使用JdbcTemlate还需一个 spring-tx-x.x.x, RELEASE.jar 这个包包含了一下事务和异常控制。 (1) execute 方法:可以用于执行任何SQL语句,一般用于执行DDL语句; (2) update 方法及 batchUpdate 方法