JdbcTemplate implements additions, deletions, and changes

1. First, import the corresponding package

2. Add data (in fact, except for querying other operations, the update method is called, but the parameters are different)

@Test
	void testAdd() {
		//set the data source
    DriverManagerDataSource dd = new DriverManagerDataSource();
    dd.setDriverClassName("com.mysql.jdbc.Driver");
    dd.setUrl("jdbc:mysql:///users");
    dd.setUsername("root");
    dd.setPassword("Database Password");
    
    //Put the data source into the JdbcTemplate
    JdbcTemplate jt = new JdbcTemplate(dd);
    // write sql statement
    String sql = "insert into myclass values(?,?,?)";
    //call his update method
    jt.update(sql, "4","xue","7978");
	}

3. Delete data

@Test
	void testDelete() {
    DriverManagerDataSource dd = new DriverManagerDataSource();
    dd.setDriverClassName("com.mysql.jdbc.Driver");
    dd.setUrl("jdbc:mysql:///users");
    dd.setUsername("root");
    dd.setPassword("Database Password");
    
    JdbcTemplate jt = new JdbcTemplate(dd);
    String sql = "delete from myclass where id=?";
    jt.update(sql, "1");
	}

4. Modify data

@Test
	void testUpdate() {
    DriverManagerDataSource dd = new DriverManagerDataSource();
    dd.setDriverClassName("com.mysql.jdbc.Driver");
    dd.setUrl("jdbc:mysql:///users");
    dd.setUsername("root");
    dd.setPassword("Database Password");
    
    JdbcTemplate jt = new JdbcTemplate(dd);
    String sql = "update myclass set name=? where id=?";
    jt.update(sql, "smn","3");
	}

5. 1) Query data (the query returns a certain value)

	@Test
	void testSelect() {
    DriverManagerDataSource dd = new DriverManagerDataSource();
    dd.setDriverClassName("com.mysql.jdbc.Driver");
    dd.setUrl("jdbc:mysql:///users");
    dd.setUsername("root");
    dd.setPassword("Database Password");
    
    JdbcTemplate jt = new JdbcTemplate(dd);
    String sql = "select count(*) from myclass";
    int count = jt.queryForObject(sql, Integer.class);//The total number of data returned here (a value)
    System.out.println(count);
	}

5. 2) The query returns the object

Let's start with a general practice

@Test
	void testjdbc() throws Exception
	{
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
	       //load driver
		Class.forName("com.mysql.jdbc.Driver");
	       //create connection
		conn = DriverManager.getConnection("jdbc:mysql:///users","root","database password");
		// write sql statement
		String sql = "select * from myclass where name=?";
		//Precompiled
		ps = conn.prepareStatement(sql);
		//set parameter value
		ps.setString(1, "hee hee");
		//Execute sql
		rs = ps.executeQuery();
	    // loop through the result set
		while(rs!=null)
		{
			if(rs.next())
			{
				int id = rs.getInt("id");
				int sex = rs.getInt("sex");
				user user = new user();
				user.setName(id);
				user.setSex(sex);
				System.out.println(user);
			}
	
		}
	rs.close();
	ps.close();
	conn.close();
	ps.close();
	}

This is the created user class

package springjdbc;

public class user {
	private int id;
	private int sex;
	public int getName() {
		return id;
	}
	public void setName(int  id) {
		this.id = id;
	}
	public int getSex() {
		return sex;
	}
	public void setSex(int sex) {
		this.sex = sex;
	}
	@Override
	public String toString() {
		return "user [name=" + id + ", sex=" + sex + "]";
	}
	

}

I have used JdbcTemplate again

@Test
	void testObject() throws Exception {
		DriverManagerDataSource dd = new DriverManagerDataSource();
		dd.setDriverClassName("com.mysql.jdbc.Driver");
		dd.setUrl("jdbc:mysql:///users");
		dd.setUsername("root");
		dd.setPassword("Database Password");
		
		String sql = "select * from myclass where name =?";
		JdbcTemplate jt = new JdbcTemplate(dd);//jt encapsulates Jdbc
		user user = jt.queryForObject(sql, new rowmapper(),"嘻嘻");
		System.out.println(user);
	}

This method is called here


Among them, RowMapper is an interface. You need to write your own class to implement the interface and do data encapsulation yourself.

The RowMapper implementation class is as follows:

class rowmapper implements RowMapper<user>
{

	@Override
	public user mapRow(ResultSet rs, int arg1) throws SQLException {
		// TODO Auto-generated method stub
		int id = rs.getInt("id");
		int sex = rs.getInt("sex");
		user user = new user();
		user.setName(id);
		user.setSex(sex);
		return user;
		
	}
}

5. 3) The query returns the List collection

@Test
	void testList()
	{
		DriverManagerDataSource dd = new DriverManagerDataSource();
		dd.setDriverClassName("com.mysql.jdbc.Driver");
		dd.setUrl("jdbc:mysql:///users");
		dd.setUsername("root");
		dd.setPassword("Database Password");
		
		String sql = "select * from myclass";
		JdbcTemplate jt = new JdbcTemplate(dd);
		List<user> list = jt.query(sql, new myrowmapper());
		System.out.println(list);
	}

This method is called here


The above Object... args is a variable parameter, that is, when you query the database, the parameters in the query statement

sql is the query you wrote

The implementation class of RowMapper is the same as the implementation class of the returned object above




Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324414275&siteId=291194637