注意: 是在05(Spring+SpringMVC)完成后的的基础上操作,
pom.xml
)<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jdbcartifactId>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
dependency>
jdbc.properties
)# JDBC
# MySQL 8.x: com.mysql.cj.jdbc.Driver
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://127.0.0.1:3306/2019springtest?useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.username=root
jdbc.password=root
# JDBC Pool
jdbc.pool.init=1
jdbc.pool.minIdle=3
jdbc.pool.maxActive=20
# JDBC Test
jdbc.testSql=SELECT 'x' FROM DUAL
DruidDatasourceConfig.java
)com.alibaba.druid.pool.DruidDataSource
@Configuration //表示配置文件类
@PropertySource(value = {
"classpath:jdbc.properties",},ignoreResourceNotFound=true) //添加配置文件
public class DruidDatasourceConfig {
// 参考链接 https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE
@Value("${jdbc.driverClass}")
private String jdbc_driverClassName ;
@Value("${jdbc.connectionURL}")
private String jdbc_url ;
@Value("${jdbc.username}")
private String jdbc_username ;
@Value("${jdbc.password}")
private String jdbc_password ;
@Value("${jdbc.pool.init}")
private Integer jdbc_initialSize ;
@Value("${jdbc.pool.minIdle}")
private Integer jdbc_minIdle ;
@Value("${jdbc.pool.maxWait}")
private Integer jdbc_maxWait ;
@Value("${jdbc.pool.maxActive}")
private Integer jdbc_maxActive ;
@Autowired
private DataSource dataSource;
@Bean(destroyMethod="close",initMethod="init")
public DataSource dataSource() throws SQLException {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(jdbc_url);
dataSource.setDriverClassName(jdbc_driverClassName);
dataSource.setPassword(jdbc_password);
dataSource.setUsername(jdbc_username);
dataSource.setInitialSize(jdbc_initialSize);
dataSource.setMinIdle(jdbc_minIdle);
dataSource.setMaxWait(jdbc_maxWait);
dataSource.setMaxActive(jdbc_maxActive);
dataSource.setValidationQuery("select 1 from dual");
dataSource.setFilters("stat"); //配置以后监控中心才会分析执行的sql
return dataSource;
}
@Bean
public JdbcTemplate jdbcTemplate(){
return new JdbcTemplate(dataSource);
}
}
DruidStatFilter.java
)
@WebFilter(
filterName="druidWebStatFilter",urlPatterns="/*",
initParams={
/** 忽略资源 */
@WebInitParam(name="exclusions", value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*,/static/*"),
@WebInitParam(name="profileEnable",value="true"),
/** 监控当前COOKIE的用户 */
@WebInitParam(name="principalCookieName",value="USER_COOKIE"),
/** 监控当前SESSION的用户 */
@WebInitParam(name="principalSessionName",value="USER_SESSION"),
/** 监控单个url访问数据库情况 */
@WebInitParam(name = "profileEnable",value = "true")
}
)
public class DruidStatFilter extends WebStatFilter {
}
DruidStatViewServlet.java
)
@WebServlet(urlPatterns="/druid/*",
initParams={
/** 白名单,如果不配置或value为空,则允许所有 */
@WebInitParam(name="allow",value=""),
/** 黑名单,与白名单存在相同IP时,优先于白名单 */
@WebInitParam(name="deny",value=""),
/** 用户名 */
@WebInitParam(name="loginUsername",value="admin"),
/** 密码 */
@WebInitParam(name="loginPassword",value="admin"),
/** 禁用HTML页面上的“Reset All”功能 */
@WebInitParam(name="resetEnable",value="false")
})
public class DruidStatViewServlet extends StatViewServlet {
}
User.java
)@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String username;
private String password;
private String avatar;
private Date created;
private Date updated;
}
UserDao.java
)finaAll
取得所有的User数据UserRowMapper
,用来做映射数据@Repository
public class UserDao {
@Autowired
JdbcTemplate jdbcTemplate;
public List<User> findAll() {
return jdbcTemplate.query("select * from user", new UserRowMapper());
}
class UserRowMapper implements RowMapper<User> {
@Override
public User mapRow(ResultSet rs, int i) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setAvatar(rs.getString("avatar"));
user.setCreated(rs.getDate("created"));
user.setUpdated(rs.getDate("updated"));
return user;
}
}
}
UserController.java
)UserDao
/user/list
,返回前台JSON数据@Controller
public class UserController {
@Autowired
private UserDao userDao;
@RequestMapping("/user/list")
@ResponseBody
public List<User> findall() {
return userDao.findAll();
}
}