java mysql template_Spring框架教程(五):Jdbc Template—数据库的连接与访问

目录:一、概述和准备工作

1.什么是Jdbc Template

2.准备工作

二、添加功能

1.基本步骤

2.批量添加

三、修改、删除功能

1.基本步骤

2.批量修改和删除

四、查询功能

1.查询返回某个值

2.查询返回对象

3.查询返回集合

一、概述和准备工作

1.什么是Jdbc Template

Jdbc是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法,而Jdbc Template是对Jdbc的封装。

2.准备工作

从这一章开始,我们重新创建项目spring5_demo2。引入相关的jar包:

除了原本的jar包,还需要新增mysql-connector-java-8.0.23.jar、spring-orm-5.2.6.RELEASE.jar、spring-tx-5.2.6.RELEASE.jar、spring-jdbc-5.2.6.RELEASE.jar,除了第一个后面几个都能在spring-5.2.6.RELEASE-dist文件夹下找到。

需要注意的是,一定要确认好自己的mysql的版本,会影响选择的connector版本。比如,我用的是mysql 8,我在maven仓库中下载的也是connector 8。在xml文件中配置数据库连接池:

首先在src目录下新建bean.xml文件,作如下配置:

配置jdbcTemplate对象,注入DataSource连接池对象:

创建相应的service类和dao类,在dao类中注入JdbcTemplate对象

在com.wang下 创建包service和包dao,在service包下创建BookService类,在dao下创建BookDao接口和其实现类BookDaoImpl,这几个类及接口的代码如下:

@Component

public interface BookDao {

}

@Component

public class BookDaoImpl implements BookDao {

@Autowired

private JdbcTemplate jdbcTemplate;

}

@Service

public class BookService {

@Autowired

private BookDao bookDao;

}在xml配置文件中开启组件扫描,并给创建的类添加相应的注释

前面已经说过了,自己写写代码吧。

二、添加功能

1.基本步骤

(1)对应数据库表创建实体类我们在com.wang下创建包entity,用来存放所有的实体类,然后在entity下创建User类,如下:

package com.wang.entity;

public class User {

private int user_id;

private String user_name;

private int user_age;

private String user_gender;

public User(){}

public User(int user_id, String user_name, int user_age, String user_gender) {

this.user_id = user_id;

this.user_name = user_name;

this.user_age = user_age;

this.user_gender = user_gender;

}

public int getUser_id() {

return user_id;

}

public void setUser_id(int user_id) {

this.user_id = user_id;

}

public String getUser_name() {

return user_name;

}

public void setUser_name(String user_name) {

this.user_name = user_name;

}

public int getUser_age() {

return user_age;

}

public void setUser_age(int user_age) {

this.user_age = user_age;

}

public String getUser_gender() {

return user_gender;

}

public void setUser_gender(String user_gender) {

this.user_gender = user_gender;

}

}编写相应的service类和dao接口和类,并给这些类加上相应的注解,如下:

@Component

public interface UserDao {

//添加的方法 void add(User user);

}

@Component

public class UserDaoImpl implements UserDao {

@Autowired

private JdbcTemplate jdbcTemplate;

//添加的方法 @Override

public void add(User user){

//创建sql语句 String sql="insert into user values(?,?,?,?)";

//调用方法实现,方法返回添加行数,第二个参数arg是一个可变参数列表 Object[] arg={user.getUser_id(),user.getUser_name(),user.getUser_age(),user.getUser_gender()};

int update=jdbcTemplate.update(sql,arg);

System.out.println(update);

}

}

@Service

public class UserService {

//注入dao @Autowired

private UserDao userDao;

//添加的方法 public void addUser(User user){

userDao.add(user);

}

}测试一下,测试代码、IDEA中执行结果、MySQL中执行后结果如下:

@Test

public void testUser(){

ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");

UserService userService=context.getBean("userService",UserService.class);

userService.addUser(new User(1,"Tracy",25,"female"));

}

2.批量添加UserService中方法:

//批量添加 public void adds(List arg){

userDao.adds(arg);

}UserDao中方法:

//批量添加 void adds(List arg);UserDaoImpl中方法的实现:

//批量添加 @Override

public void adds(List arg) {

String sql="insert into user values(?,?,?,?)";

int[] row=jdbcTemplate.batchUpdate(sql,arg);

System.out.println("批量添加了数据");

}测试类中方法:

//批量添加 List arg=new ArrayList<>();

Object[] o1={3,"坨坨",16,"female"};

Object[] o2={4,"鹏鹏",24,"male"};

Object[] o3={5,"青青",19,"female"};

Object[] o4={6,"春兰",45,"female"};

arg.add(o1);arg.add(o2);arg.add(o3);arg.add(o4);

userService.adds(arg);

三、修改、删除功能

1.基本步骤

和添加操作基本没有太大区别,仅有几个类中具体方法实现的不同。在UserService中添加相应的方法代码:

@Service

public class UserService {

//注入dao @Autowired

private UserDao userDao;

//添加的方法 public void addUser(User user){

userDao.add(user);

}

//修改的方法 public void updateUser(User user){

userDao.update(user);

}

//删除的方法 public void deleteUser(User user){

userDao.delete(user);

}

}UserDao接口中定义相应的方法:

@Component

public interface UserDao {

//添加的方法 void add(User user);

//修改的方法 void update(User user);

//删除的方法 void delete(User user);

}UserDaoImpl类中实现相应的方法:

@Component

public class UserDaoImpl implements UserDao {

@Autowired

private JdbcTemplate jdbcTemplate;

//添加的方法 @Override

public void add(User user){

//创建sql语句 String sql="insert into user values(?,?,?,?)";

//调用方法实现,方法返回添加行数,第二个参数arg是一个可变参数列表 Object[] arg={user.getUser_id(),user.getUser_name(),user.getUser_age(),user.getUser_gender()};

int update=jdbcTemplate.update(sql,arg);

System.out.println("在user表中成功添加数据【"+update+"】行");

}

//修改的方法 @Override

public void update(User user){

//创建sql语句 String sql="update user set user_name=?,user_age=? where user_id=?";

//调用方法实现 Object[] arg={user.getUser_name(),user.getUser_age(),user.getUser_id()};

int update=jdbcTemplate.update(sql,arg);

System.out.println("在user表中成功修改数据【"+update+"】行");

}

//删除的方法 @Override

public void delete(User user){

//创建sql语句 String sql="delete from user where user_id=?";

//调用方法实现 Object[] arg={user.getUser_id()};

int update=jdbcTemplate.update(sql,arg);

System.out.println("在user表中成功删除数据【"+update+"】行");

}

}最后,测试类:

public class TestDemo {

@Test

public void testUser(){

ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");

UserService userService=context.getBean("userService",UserService.class);

User user=new User(2,"Tracy0",25,"female");

//增加数据 userService.addUser(user);

//修改数据 user.setUser_age(18);

user.setUser_name("猫猫兔");

userService.updateUser(user);

//删除数据 user.setUser_id(1);

userService.deleteUser(user);

}

}

2.批量修改和删除UserService中方法:

//批量删除 public void deletes(List arg){

userDao.deletes(arg);

}

//批量修改 public void updates(List arg){

userDao.updates(arg);

}UserDao中方法:

//批量删除 void deletes(List arg);

//批量修改 void updates(List arg);UserDaoImpl中方法的实现:

//批量删除 @Override

public void deletes(List arg) {

String sql="delete from user where user_id=?";

jdbcTemplate.batchUpdate(sql,arg);

System.out.println("批量删除成功");

}

//批量修改 @Override

public void updates(List arg) {

String sql="update user set user_name=?,user_age=? where user_id=?";

jdbcTemplate.batchUpdate(sql,arg);

System.out.println("批量修改成功");

}测试类中方法:

@Test

public void testUser(){

ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");

UserService userService=context.getBean("userService",UserService.class);

//批量删除 List arg1=new ArrayList<>();

Object[] o1={1};

Object[] o2={2};

arg1.add(o1);arg1.add(o2);

userService.deletes(arg1);

//批量修改 List arg2=new ArrayList<>();

Object[] n1={"坨坨1",16,3};

Object[] n2={"鹏鹏1",24,4};

Object[] n3={"青青1",19,5};

Object[] n4={"春兰1",45,6};

arg2.add(n1);arg2.add(n2);arg2.add(n3);arg2.add(n4);

userService.updates(arg2);

}

四、查询功能

1.查询返回某个值UserService中方法:

//查询的方法 //返回某个值 public int searchUser0(){

return userDao.searchUser0();

}UserDao中方法:

//查询的方法 //查询返回某个值 int searchUser0();UserDaoImpl中方法的实现:

//查询的方法 //查询返回某个值 @Override

public int searchUser0() {

//创建sql语句 String sql="select COUNT(user_id) from user";

//调用方法实现 int result=jdbcTemplate.queryForObject(sql,Integer.class);

System.out.println("在user表中共有数据【"+result+"】行");

return result;

}测试类中方法:

@Test

public void testUser(){

ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");

UserService userService=context.getBean("userService",UserService.class);

//查询数据:返回一个值 System.out.println(userService.searchUser0());

}

2.查询返回对象UserService中方法:

//查询:返回一个对象 public User searchUser1(User user){

return userDao.searchUser1(user);

}UserDao中方法:

//查询:返回某个对象 User searchUser1(User user);UserDaoImpl中方法的实现:

//查询:返回一个对象 @Override

public User searchUser1(User user) {

//创建sql语句 String sql="select * from user where user_id=?";

//调用方法实现 Object[] arg={user.getUser_id()};

User user1=jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper(User.class),arg);

System.out.println("查询成功");

return user1;

}测试类中方法:

@Test

public void testUser(){

ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");

UserService userService=context.getBean("userService",UserService.class);

User user=new User(2,"Tracy0",25,"female");

//查询数据:返回一个对象 User u=userService.searchUser1(user);

System.out.println("id:"+u.getUser_id()+" name:"+u.getUser_name()+" 性别:"

+u.getUser_gender()+" 年龄:"+u.getUser_age());

}

3.查询返回集合UserService中方法:

//查询:返回列表 public List searchUser2(User user){

return userDao.searchUser2(user);

}UserDao中方法:

//查询:返回列表 List searchUser2(User user);UserDaoImpl中方法的实现:

//查询:返回列表 @Override

public List searchUser2(User user) {

//创建sql语句 String sql="select * from user where user_gender=?";

//调用方法实现 Object[] arg={user.getUser_gender()};

List users=jdbcTemplate.query(sql,new BeanPropertyRowMapper(User.class),arg);

System.out.println("查询列表成功");

return users;

}测试类中方法:

//查询数据:返回列表 List users=userService.searchUser2(user);

for (User u:users){

System.out.println("id:"+u.getUser_id()+" name:"+u.getUser_name()+

" 性别:"+u.getUser_gender()+" 年龄:"+u.getUser_age());

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值