spring boot 整合 JdbcTemplate

JdbcTemplate 是操作数据库的类库

使用 JdbcTemplate 环境准备

  • 修改pom文件,引入相关依赖
<!-- 引入jdbc 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 引入 mysql 数据库连接依赖-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
  • 配置数据库信息,在application.properties中添加如下内容:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/pangugledb
spring.datasource.username=root
spring.datasource.password=root
  • 创建用户表
CREATE TABLE IF NOT EXISTS pangugle_user (
  id       			int(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
  username      varchar(20) NOT NULL ,
  password   		char(32) COLLATE utf8_bin NOT NULL ,
  PRIMARY KEY (id),
  UNIQUE INDEX pangugle_username(username)
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;
1. 上面我们把 id 定义为自增主键

2. username 为用户名,并且添加为唯一索引

3. password 用户密码, 一般长度设置为32位,MD5 加密之后的

安装sql 教程在这里

记得创建 数据库 和 用户表!

代码示例

  • 定义用户实体类
public class User {
	private long id;
	private String username;
	private String password;

	public long getId() {
		return id;
	}
	public String getUsername() {
		return username;
	}
	public String getPassword() {
		return password;
	}
	public void setId(long id) {
		this.id = id;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}
  • 定义 UserDao 接口
public interface UserDao {
	public void saveUser(User user);
	public void deleteUserByName(User user);
	public void deleteUserById(User user);
	public void updatePassword(User user);
	public User findUserByName(String username);
	public List<User> queryAllUser();
}
  • 实现 UserDao 接口
@Repository
public class UserDaoImpl implements UserDao{

	@Autowired
	private JdbcTemplate mJdbcTemplate;

	public void saveUser(User user)
	{
		String sql = "insert into pangugle_user(username, password) values(?,?)";
		mJdbcTemplate.update(sql, user.getUsername(), user.getPassword());
	}

	public void deleteUserByName(User user)
	{
		String sql = "delete from pangugle_user where username = ?";
		mJdbcTemplate.update(sql, user.getUsername());
	}

	public void deleteUserById(User user)
	{
		String sql = "delete from pangugle_user where id = ?";
		mJdbcTemplate.update(sql, user.getId());
	}

	public void updatePassword(User user)
	{
		String sql = "update pangugle_user set password = ? where username = ?";
		mJdbcTemplate.update(sql, user.getPassword(), user.getUsername());
	}

	public User findUserByName(String username)
	{
		String sql = "select * from pangugle_user where username = ?";
		return mJdbcTemplate.queryForObject(sql, User.class, username);
	}

	public List<User> queryAllUser()
	{
		String sql = "select * from pangugle_user limit 10";
		return mJdbcTemplate.queryForList(sql, User.class);
	}

}

代码说明:

  • @Repository 表示交给spring 容器管理,单例
  • private JdbcTemplate mJdbcTemplate; 这里使用的是 @Autowired 进行注入
  • saveUser 插入用户
  • deleteUserByName 通过用户名删除记录
  • deleteUserById 通过用户id删除记录
  • updatePassword 更新用户密码
  • findUserByName 通过用户名查看用户信息
  • queryAllUser 查看所有用户,sql 语句有个 limit 10 ,表示最多获取 10 结果集

注意Dao层注解使用的是 @Repository

运行请结合下一个章节 service 层 和 controller 层