springboot使用JdbcTemplate完成对数据库的增删改查功能
首先新建一个简单的数据表,通过操作这个数据表来进行演示
drop table if exists `items`; create table `items` ( `id` int(11) not null auto_increment, `title` varchar(255) default null, `name` varchar(10) default null, `detail` varchar(255) default null, primary key (`id`) ) engine=innodb auto_increment=7 default charset=utf8;
引入jdbctemplate的maven依赖及连接类
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-jdbc</artifactid> </dependency> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <scope>runtime</scope> </dependency>
在application.properties文件配置mysql的驱动类,数据库地址,数据库账号、密码信息,application.properties新建在src/main/resource文件夹下
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/spring?usessl=false spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.driver spring.datasource.max-idle=10 spring.datasource.max-wait=10000 spring.datasource.min-idle=5 spring.datasource.initial-size=5 server.port=8080 server.session.timeout=10 server.tomcat.uri-encoding=utf-8
新建一个实体类,属性对应sql字段
package org.amuxia.start; public class items { private integer id; private string title; private string name; private string detail; public integer getid() { return id; } public void setid(integer id) { this.id = id; } public string gettitle() { return title; } public void settitle(string title) { this.title = title; } public string getname() { return name; } public void setname(string name) { this.name = name; } public string getdetail() { return detail; } public void setdetail(string detail) { this.detail = detail; } public items() { super(); // todo auto-generated constructor stub } public items(integer id, string title, string name, string detail) { super(); this.id = id; this.title = title; this.name = name; this.detail = detail; } @override public string tostring() { return "items [id=" + id + ", title=" + title + ", name=" + name + ", detail=" + detail + "]"; } }
新增操作
/** * 新增数据 * @param items * @return */ @requestmapping("/add") public @responsebody string additems(items items) { string sql = "insert into items (id,title,name,detail) value (?,?,?,?)"; object args[] = {items.getid(),items.gettitle(),items.getname(),items.getdetail()}; int temp = jdbctemplate.update(sql, args); if(temp > 0) { return "文章新增成功"; } return "新增出现错误"; }
我们做一个测试。在postman测试工具中输入
我们可以看到,新增已经成功了,确实很方便,也没有繁琐的配置信息。
其余删除,更新操作与新增代码不变,只是sql的变化,这里不做演示。
全部查询操作
/** * @return * 查询全部信息 */ @requestmapping("/list") public list<map<string, object>> itemslist() { string sql = "select * from items"; list<map<string, object>> list = jdbctemplate.queryforlist(sql); return list; }
我们做一个测试。在postman测试工具中输入
我们看到,包括刚才新增的数据,都已经被查出来了。
这里为了学习一下springboot的jdbctemplate操作,所有增删改查代码都写在itemscontroller类中,也方便演示,这里把代码贴出来,需要的可以运行一下
package org.amuxia.start; import java.util.list; import java.util.map; import org.springframework.beans.factory.annotation.autowired; import org.springframework.context.annotation.componentscan; import org.springframework.jdbc.core.jdbctemplate; import org.springframework.web.bind.annotation.pathvariable; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.responsebody; import org.springframework.web.bind.annotation.restcontroller; @componentscan @restcontroller @requestmapping("/items") public class itemscontroller { @autowired private jdbctemplate jdbctemplate; /** * @return * 查询全部信息 */ @requestmapping("/list") public list<map<string, object>> itemslist() { string sql = "select * from items"; list<map<string, object>> list = jdbctemplate.queryforlist(sql); return list; } /** * @param id * @return * 根据id查询单条信息 */ @requestmapping("/detail/{id}") public map<string, object> detail(@pathvariable int id) { map<string, object> map = null; list<map<string, object>> list = itemslist(); map = list.get(id); return map; } /** * 新增数据 * @param items * @return */ @requestmapping("/add") public @responsebody string additems(items items) { string sql = "insert into items (id,title,name,detail) value (?,?,?,?)"; object args[] = {items.getid(),items.gettitle(),items.getname(),items.getdetail()}; int temp = jdbctemplate.update(sql, args); if(temp > 0) { return "文章新增成功"; } return "新增出现错误"; } /** * @param items * @return * 删除数据 */ @requestmapping("/del") public @responsebody string delitems(items items) { string sql = "delete from items where id = ?"; object args[] = {items.getid()}; int temp = jdbctemplate.update(sql, args); if(temp > 0) { return "文章删除成功"; } return "删除出现错误"; } /** * @param items * @return * 更新操作 */ @requestmapping("/upd") public @responsebody string upditems(items items) { string sql = "update items set title = ?,detail = ? where id = ?"; object args[] = {items.gettitle(),items.getdetail(),items.getid()}; int temp = jdbctemplate.update(sql, args); if(temp > 0) { return "文章修改成功"; } return "修改出现错误"; } }
这里解释一个注解
@componentscan:
@componentscan告诉spring 哪个注解标识的类会被spring自动扫描并且装入bean容器。如果你有个类用@controller注解标识了,那么,如果不加上@componentscan自动扫描该controller,那么该controller就不会被spring扫描到,更不会装入spring容器中,controller就不会起作用。
启动类代码
package org.amuxia.start; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.enableautoconfiguration; import org.springframework.web.bind.annotation.restcontroller; @restcontroller @enableautoconfiguration public class app { public static void main( string[] args ) { system.out.println( "start....." ); springapplication.run(itemscontroller.class, args); } }
总结
以上所述是小编给大家介绍的springboot使用jdbctemplate完成对数据库的增删改查功能,希望对大家有所帮助
下一篇: 非递归的输出1-N的全排列实例(推荐)