Spring 是个一站式框架:Spring 自身也提供了控制层的 SpringMVC 和 持久层的 Spring JdbcTemplate。
1> 导入相关的jar
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
<!--4.spring-context-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!--5.spring-jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
2> 在Spring的配置文件中配置阿里巴巴数据库连接池管理对象,以及Spring封装的JdbcTemplate
重新写一个db.xml 分离出jdbc连接 ,然后再spring.xml中导入db.xml
<import resource="classpath:db.xml"></import>
db.xml
<!--
classpath: 表示读取内路径 扫描数据库连接信息配置文件
-->
<context:property-placeholder location="classpath:config.properties"/>
<!--管理数据源对象 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${driverName}"></property>
<property name="url" value="${url}"></property>
<property name="username" value="${uname}"></property>
<property name="password" value="${upwd}"></property>
<property name="initialSize" value="10"></property>
<property name="minIdle" value="5"></property>
<property name="maxActive" value="20"></property>
<property name="maxWait" value="2000"></property>
</bean>
<!-- 配置Spring所提供的JdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
3> dao层
@Repository(value = "userDao")
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
//保存
public void insertInto() {
// jdbcTemplate.execute(); 用于执行ddl(用来创建表结构create drop) 语句
String sql = "insert into admin(account,password) values (?,?)";
jdbcTemplate.update(sql, "luss", "123");
}
public List<User> selectAll() {
List<User> list = jdbcTemplate.query(" select * from user where id > ?",
new RowMapper<User>() {
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
User user = new User();
user.setId(resultSet.getInt("id"));
user.setName(resultSet.getString("name"));
user.setGender(resultSet.getString("gender"));
return user;
}
}, "3");
return list;
}
public List<User> selectAll2() {
String sql = "select * from user";
List<User> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
return list;
}
}
4> Service层
@Service(value = "userService")
public class UserService {
@Autowired
UserDao userDao;
public void saveUser() {
userDao.insertInto();
}
public List<User> selectAll() {
List<User> users = userDao.selectAll();
return users;
}
public List<User> selectAll2() {
List<User> users = userDao.selectAll2();
return users;
}
}
5> test
@Test
public void test2() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
UserService userService = applicationContext.getBean("userService",UserService.class);
// userService.saveUser();
List<User> users = userService.selectAll2();
for (User user:users){
System.out.println(user);
}
}
6> 结果