(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://www.thymeleaf.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://www.haodehen.cn/did117968