Spring JDBCTemplate:如何从 Spring 控制器调用 MySQL 模式中的视图
Spring JDBCTemplate: How to call a View in MySQL schema from Spring Controller
我在 MySQL 架构中有一个视图已经执行了以下操作:
我的问题是如何使用 jdbctemplate 调用该视图?
// insert person into database
jdbcTemplate.update(
"INSERT INTO Person (FirstName, LastName, Address, Phone, City, State, ZipCode) VALUES (?, ?, ?, ?, ?, ?, ?)",
person.getFirstName(), person.getLastName(), person.getAddress(), person.getPhone(), person.getCity(), person.getState(), person.getZipCode()
);
// get this persons generated id from the DB
int personId = jdbcTemplate.queryForObject(
"SELECT Id FROM Person WHERE FirstName=? AND LastName=?", new Object[]{person.getFirstName(), person.getLastName()}, int.class);
// create user account for person
jdbcTemplate.update(
"INSERT INTO User (person_Id, active, username, password) VALUES (?, ?, ?, ?)",
personId, 1, username, password
);
int userId = jdbcTemplate.queryForObject(
"SELECT user_id FROM User WHERE username=? AND password=?", new Object[]{username, password}, int.class);
// finally add role to user
// by default, all users are set to Customer roles.
jdbcTemplate.update(
"INSERT INTO User_role (user_id, role_id) VALUES (?, ?)",
userId, Role.CUSTOMER_ROLE
);
选择数据时,Views
可以像 JDBC 中的任何其他表一样访问。所以,像下面这样的东西对我们来说很好。
int personId = jdbcTemplate.queryForObject(
"SELECT Id FROM Our_View WHERE FirstName=? AND LastName=?", new Object[]{person.getFirstName(), person.getLastName()}, int.class);
但是,对于 Mysql 中的可更新和可插入视图,请参考 here
我在 MySQL 架构中有一个视图已经执行了以下操作: 我的问题是如何使用 jdbctemplate 调用该视图?
// insert person into database
jdbcTemplate.update(
"INSERT INTO Person (FirstName, LastName, Address, Phone, City, State, ZipCode) VALUES (?, ?, ?, ?, ?, ?, ?)",
person.getFirstName(), person.getLastName(), person.getAddress(), person.getPhone(), person.getCity(), person.getState(), person.getZipCode()
);
// get this persons generated id from the DB
int personId = jdbcTemplate.queryForObject(
"SELECT Id FROM Person WHERE FirstName=? AND LastName=?", new Object[]{person.getFirstName(), person.getLastName()}, int.class);
// create user account for person
jdbcTemplate.update(
"INSERT INTO User (person_Id, active, username, password) VALUES (?, ?, ?, ?)",
personId, 1, username, password
);
int userId = jdbcTemplate.queryForObject(
"SELECT user_id FROM User WHERE username=? AND password=?", new Object[]{username, password}, int.class);
// finally add role to user
// by default, all users are set to Customer roles.
jdbcTemplate.update(
"INSERT INTO User_role (user_id, role_id) VALUES (?, ?)",
userId, Role.CUSTOMER_ROLE
);
Views
可以像 JDBC 中的任何其他表一样访问。所以,像下面这样的东西对我们来说很好。
int personId = jdbcTemplate.queryForObject(
"SELECT Id FROM Our_View WHERE FirstName=? AND LastName=?", new Object[]{person.getFirstName(), person.getLastName()}, int.class);
但是,对于 Mysql 中的可更新和可插入视图,请参考 here