目录
本节还是采用之前文章中的项目,可以加我QQ或者评论邮箱,我把项目打包给你们哦。
1. JDBC
1.1 添加依赖
首先需要在pom文件中添加需要的依赖,数据库连接器和用于访问数据库用到的jdbc依赖:我已经写好了,这里将pom里面的内容进行替换就好了。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.chtw</groupId>
<artifactId>spring-boot-02</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot-02</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
1.2 编写JavaBean
我这里简单实现以下登录操作,判断用户和密码都正确的时候,登录成功。
package com.chtw.entity;
/**
* @author CHTW
* @date 2019-10-18-9:44
*/
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
1.3 配置数据源
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://127.0.0.1:3306/test2
driver‐class‐name: com.mysql.jdbc.Driver
这里说明一下:如果我们指定了schema,那么在类路径下放一个sql文件的话,在我们启动项目的时候就会帮我们执行这些sql语句,(initialization-mode: always这个是springboot2.0以后必须要加上的,不加的话不能执行)比如:
在我们启动的时候就会帮我们创建user这张表。
user.sql内容如下:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
INSERT INTO `user` VALUES (1, 'admin', '123456');
SET FOREIGN_KEY_CHECKS = 1;
1.4 修改接口层
@RequestMapping("/login")
public String login(HttpServletRequest request, HttpSession session,Model model,User user){
//设置sql语句需要传入的参数
List<Object> params = new ArrayList<Object>();
params.add(user.getUsername());
params.add(user.getPassword());
//springboot自动配置了JdbcTemplate操作数据库
//BeanPropertyRowMapper将数据库查询结果转换为Java类对象。
List<User> luser = jdbcTemplate.query("select * from user where username=? and password=?",params.toArray(),new BeanPropertyRowMapper<User>(User.class));
if(luser.size()>0){
session.setAttribute("loginUser",user.getUsername());
return "redirect:/main.html";
}else{
model.addAttribute("msg","用户或密码错误!");
return "login";
}
}
这样一个简单的登录操作就完成了。
2. 整合MyBatis
mybatis是比较流行的框架,而且它还可以采用mybatis逆向技术去直接生成Javabean、mapper映射文件,以及dao层代码(数据访问层,对某个表的增删改查)。SpringBoot对mybatis也有很好的支持。
2.1 添加依赖
在pom.xml文件中添加mybatis依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
2.2 添加service层
package com.chtw.service;
import com.chtw.entity.User;
import com.chtw.mapper.HelloMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author CHTW
* @date 2019-10-18-9:41
*/
@Service
public class HelloService {
@Autowired
private HelloMapper helloMapper;
/**
* 获取所有用户信息
* @return
*/
public List<User> getAll(){
return helloMapper.getAll();
}
/**
* 验证登录函数
* @param user
* @return
*/
public List<User> Login(User user){
return helloMapper.Login(user);
}
}
2.3 添加dao层
下面采用的是使用注解进行数据库操作,也可以写一个mapper.xml文件来写我们访问数据库的sql。
注解方式如下:
package com.chtw.mapper;
import com.chtw.entity.User;
//import org.apache.ibatis.annotations.Mapper;
//import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration;
import java.util.List;
/**
* @author CHTW
* @date 2019-10-18-9:42
*/
@Mapper
public interface HelloMapper {
@Select("select * from user")
public List<User> getAll();
@Select("select * from user where username=#{username} and password=#{password}")
List<User> Login(User user);
}
使用mapper.xml映射文件的方式如下(推荐使用):
在类路径文件夹下创建一个mybaits文件夹,用于存放mapper映射文件:
在application.yml配置文件中指定一下mapper扫描路径:
mybatis:
# 指定全局配置文件位置
config-location: classpath:mybatis/mybatis-config.xml
# 指定sql映射文件位置
mapper-locations: classpath:mybatis/*Mapper.xml
新建一个mybatis-config.xml(mybaits自己的配置文件)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
在创建user表的映射文件UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.chtw.mapper.HelloMapper" >
<!-- 保证user表的字段和javabean的属性能够一一对应 -->
<resultMap id="user" type="com.chtw.entity.User">
<id column="id" property="id" javaType="INTEGER"/>
<result column="username" property="username" jdbcType="VARCHAR" />
<result column="password" property="password" jdbcType="VARCHAR" />
</resultMap>
<select id="getAll" resultMap="user">
SELECT * FROM `user`
</select>
<select id="Login" resultMap="user">
SELECT * FROM `user` WHERE username=#{username} AND password=#{password}
</select>
</mapper>
将dao成的注释去掉:
2.4 修改controller层
将登录接口改一下就好了
@RequestMapping("/login")
public String login(HttpServletRequest request, HttpSession session,Model model,User user){
//设置sql语句需要传入的参数
List<Object> params = new ArrayList<Object>();
params.add(user.getUsername());
params.add(user.getPassword());
//springboot自动配置了JdbcTemplate操作数据库
//BeanPropertyRowMapper将数据库查询结果转换为Java类对象。
//List<User> luser = jdbcTemplate.query("select * from user where username=? and password=?",params.toArray(),new BeanPropertyRowMapper<User>(User.class));
List<User> luser = helloService.Login(user);
if(luser.size()>0){
session.setAttribute("loginUser",user.getUsername());
return "redirect:/main.html";
}else{
model.addAttribute("msg","用户或密码错误!");
return "login";
}
}
本节类容到此结束
本人联系方式2329095893,欢迎各位进行学习讨论
欢迎关注熊熊出没ING公众号,不定时跟新Java、python、信息安全等相关知识哦。