(1)搭建项目环境
(1.1)修改POM文件 < dependency >
< groupId > mysql </ groupId >
< artifactId > mysql-connector-java </ artifactId >
< version > 5.1.43 </ version >
</ dependency >
< dependency >
< groupId > com.alibaba </ groupId >
< artifactId > druid </ artifactId >
< version > 1.1.19 </ version >
</ dependency >
< dependency >
< groupId > org.springframework.boot </ groupId >
< artifactId > spring-boot-starter-jdbc </ artifactId >
</ dependency >
(2)配置数据源
(2.1)通过自定义配置文件方式配置数据源信息 通过@PropertySource注解读取配置文件,使用Druid连接池 @Configuration // 数据源的JDBC配置类
@ PropertySource ( "classpath:/jdbc.properties" ) // 加载指定的Properties配置文件
public class JdbcConfiguration {
@Value( "${jdbc.driverClassName}" )
private String driverClassName;
@Value( "${jdbc.url}" )
private String url;
@Value( "${jdbc.username}" )
private String username;
@Value( "${jdbc.password}" )
private String password;
// 实例化Druid
@Bean
public DataSource getDataSource(){
DruidDataSource source = new DruidDataSource();
source.setDriverClassName( this .driverClassName);
source.setUrl( this .url);
source.setUsername( this .username);
source.setPassword( this .password);
return source;
}
}
测试
@Autowired
private DataSource dataSource;
@RequestMapping( "/showInfo" )
public String showInfo(){
System.out.println( this .dataSource.getClass().getPackage());
return "ok" ;
}
package com.alibaba.druid.pool(2.2)通过@ConfigurationProperties注解读取配置信息
// 是SpringBoot的注解不能读取其他配置,只能读取SpringBoot配置application.properties
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
private String driverClassName;
private String url;
private String username;
private String password;
// 省略其他代码
}
@Configuration
// @PropertySource("classpath:/jdbc.properties")
@EnableConfigurationProperties(JdbcProperties. class ) // 指定加载哪个配置信息属性类
public class JdbcConfiguration {
@Autowired
private JdbcProperties jdbcProperties;
@Bean
public DataSource getDataSource(){
DruidDataSource source = new DruidDataSource();
source.setDriverClassName( this .jdbcProperties.getDriverClassName());
source.setUrl( this .jdbcProperties.getUrl());
source.setUsername( this .jdbcProperties.getUrl());
source.setPassword( this .jdbcProperties.getPassword());
return source;
}
}
// @Autowired
private JdbcProperties jdbcProperties;
public JdbcConfiguration(JdbcProperties jdbcProperties){
this .jdbcProperties = jdbcProperties;
}
(2.3)使用@ConfigurationProperties注解的优雅使用方式
@Configuration
public class JdbcConfiguration {
@Bean
@ConfigurationProperties(prefix = "jdbc" ) //不需要其他类
public DataSource getDataSource(){
DruidDataSource source = new DruidDataSource();
return source;
}
}
(2.4)使用SpringBoot配置文件配置数据源
在SpringBoot 1.x版本中spring-boot-starter-jdbc启动器中默认使用的数据源是org.apache.tomcat.jdbc.pool.DataSource
在SpringBoot 2.x版本中spring-boot-starter-jdbc启动器中默认使用的数据源是com.zaxxer.hikariDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/dev?useUnicode=true spring.datasource.username=root spring.datasource.password=root #spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
package com.zaxxer.hikari
(3) 用户功能测试
(3.1)编写UserDao实现类 @Component
public class UsersDaoImpl implements UsersDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
@Transactional
public void insertUsers(Users users) {
String sql = "insert into users(username, usersex) values(?,?)" ;
this .jdbcTemplate.update(sql,users.getUsername(),users.getUsersex());
}
@Override
public List<Users> selectUsersAll() {
String sql = "select * from users" ;
return this .jdbcTemplate.query(sql, new RowMapper<Users> () {
@Override
public Users mapRow(ResultSet resultSet, int i) throws SQLException{
Users users = new Users();
users.setUserid(resultSet.getInt( "userid" ));
users.setUsername(resultSet.getString( "username" ));
users.setUsersex(resultSet.getString( "usersex" ));
return users;
}
});
}
@Override
public Users selectUserById(Integer id) {
String sql = "select * from users where userid = ?" ;
Object[] agr = new Object[]{id};
Users users = new Users();
this .jdbcTemplate.query(sql, agr, new RowCallbackHandler() {
@Override
public void processRow(ResultSet resultSet) throws SQLException {
users.setUserid(resultSet.getInt( "userid" ));
users.setUsername(resultSet.getString( "username" ));
users.setUsersex(resultSet.getString( "usersex" ));
}
});
return users;
}
@Override
public void updateUsers(Users users) {
String sql = "update users set username=?,usersex=? where userid = ?" ;
this .jdbcTemplate.update(sql, users.getUsername(), users.getUsersex(), users.getUserid());
}
@Override
public void deleteUserById(Integer id) {
String sql = "delete from users where userid = ?" ;
this .jdbcTemplate.update(sql,id);
}
}
(3.2)编写UserService实现类
public class UserServiceImpl implements UserService {
@Autowired
private UsersDao usersDao;
@Override
public void addUser(Users users) { usersDao.insertUsers(users); }
@Override
public List<Users> selectUsersAll() { return usersDao.selectUsersAll(); }
@Override
public Users findUserById(Integer id) { return usersDao.selectUserById(id); }
@Override
@Transactional
public void modifyUser(Users users) { this .usersDao.updateUsers(users); }
@Override
@Transactional
public void dropUser(Integer id){ this .usersDao.deleteUserById(id); }
}
(3.3)页面跳转
@Controller
public class PageController {
@RequestMapping( "/{page}" )
public String showPage( @PathVariable String page){
System.out.println(page);
return page;
}
}
(3.4)新增用户
templates/addUsers.html
< html xmlns:th ="http://HdhCmsTestthymeleaf.org" >
< head >
< title > 新增用户 </ title >
</ head >
< body >
< form th:action ="@{/user/addUser}" method ="post" >
< input type ="text" name ="username" >< br />
< input type ="text" name ="usersex" >< br />
< input type ="submit" value ="OK" >
</ form >
</ body >
</ html >
@Autowired
private UserService userService;
@PostMapping( "/addUser" )
public String addUsers(Users users){
try {
this .userService.addUser(users);
} catch (Exception e){
e.printStackTrace();
return "error" ;
}
return "ok" ; // return "redirect:/ok"
}
redirect:/ok
(3.5) 添加favicon.ico
在/static目录下 添加 favicon.ico文件
< link rel ="shortcut icon" href ="resources/favicon.ico" th:href ="@{/static/favicon.ico}" >
(3.6)查询用户
templates/showUsers.html
< body >
< table border ="1px" >
< tr >
< th > 用户ID </ th >
< th > 用户姓名 </ th >
< th > 用户性别 </ th >
< th > 操作 </ th >
</ tr >
< tr th:each ="u: ${list}" >
< td th:text ="${u.userid}" ></ td >
< td th:text ="${u.username}" ></ td >
< td th:text ="${u.usersex}" ></ td >
< td >
< a th:href ="@{/user/preUpdateUser(id=${u.userid})}" > 修改 </ a >
< a th:href ="@{/user/deleteUser(id=${u.userid})}" > 删除 </ a >
</ td >
</ tr >
</ table >
< a href ="/addUsers" > 新增用户 </ a >
</ body >
@RequestMapping("/showUsers" )
public String findUserAll(Model model){
List <Users> list = null ;
try {
list = this .userService.selectUsersAll();
model.addAttribute( "list" , list);
System.out.println(list);
} catch (Exception e){
e.printStackTrace();
return "error" ;
}
return "showUsers" ;
}
(3.7)更新用户
< body >
< form th:action ="@{/user/updateUser}" method ="post" >
< input type ="hidden" name ="userid" th:value ="${user.userid}" >
< input type ="text" name ="username" th:value ="${user.username}" >< br />
< input type ="text" name ="usersex" th:value ="${user.usersex}" >< br />
< input type ="submit" value ="OK" >
</ form >
</ body>
@RequestMapping("/preUpdateUser" )
public String preUpdateUser(Integer id, Model model){
try {
Users users = this .userService.findUserById(id);
model.addAttribute( "user" ,users);
System.out.println(users);
} catch (Exception e){
e.printStackTrace();
return "error" ;
}
return "updateUsers" ;
}
@RequestMapping( "/updateUser" )
public String updateUser(Users users){
try {
this .userService.modifyUser(users);
} catch (Exception e){
e.printStackTrace();
return "error" ;
}
return "redirect:/ok" ;
}
(3.8)删除用户
@RequestMapping("/deleteUser" )
public String updateUser(Integer id){
try {
this .userService.dropUser(id);
} catch (Exception e){
e.printStackTrace();
return "error" ;
}
return "redirect:/ok" ;
}
SpringBoot - 08整合JDBC
标签:删除 自定义 frame integer getpass name enter 目录 artifact
查看更多关于SpringBoot - 08整合JDBC的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did117968