在上一篇博客的基础之上,实现数据库的增删改查,以及用log4j打印日志功能,用于查看相关操作
- 在pom.xml里引入log4j相关的依赖
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
- 在configs文件下新建一个log.properties,用于存放和log4j有关的一些日志属性
log4j.rootLogger=DEBUG,INFO,Console,File
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c]%m%n
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug
log4j.logger.org.mybatis=debug
log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.File=${catalina.home}/logs/mvc_test/mvc_test.log
log4j.appender.File.DatePattern=yyyy-MM-dd'.log'
log4j.appender.File.MaxFileSize=10MB
log4j.appender.File.Threshold=ALL
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n
- 在web.xml里面配置相应的字符拦截器(以防从数据库里面操作数据出现乱码)、log4j的context
<!--字符拦截器,防止从数据库里面操作数据的乱码-->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/configs/log.properties</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
- 在StudentMapper接口类中,声明对数据增删改查的函数及返回值
/*
* 获取所有学员信息
* @return 学员信息集合
*/
List<Student> selectAll();
/*
* 添加学员信息
* @param student 学员信息
* @return 执行结果
*/
int insert(Student student);
/*
* 根据ID删除学员信息
* @param stuId 学员ID
* @return 执行结果
*/
int deleteById(Integer stuId);
/*
* 根据ID删除学员信息
* @param student 待更新的学员信息
* @return 执行结果
*/
int update(Student student);
- 然后在StudentMapper.xml里写好对应的数据库操作语句
<select id="selectAll" resultType="com.mvcdemo.pojo.Student" >
select * from student
</select>
<insert id="insert" parameterType="com.mvcdemo.pojo.Student" useGeneratedKeys="true" keyColumn="stuId">
insert into student (name,sex,phone,address) VALUES (#{name},#{sex},#{phone},#{address})
</insert>
<delete id="deleteById" parameterType="java.lang.Integer">
delete from student where stuId=#{stuId}
</delete>
<update id="update" parameterType="com.mvcdemo.pojo.Student" >
update student set
<if test="name != null">
name = #{student.name}
</if>
<if test="sex != null">
sex = #{student.sex}
</if>
<if test="phone != null">
phone = #{student.phone}
</if>
<if test="address != null">
address = #{student.address}
</if>
WHERE stuId = #{stuId}
</update>
- 同样地,在StudentService接口类里,也要声明刚刚和数据库操作有关的同样地函数
/*
* 获取所有学员信息
* @return 学员信息集合
*/
List<Student> selectAll();
/*
* 添加学员信息
* @param student 学员信息
* @return 执行结果
*/
int insert(Student student);
/*
* 根据ID删除学员信息
* @param stuId 学员ID
* @return 执行结果
*/
int deleteById(Integer stuId);
/*
* 根据ID删除学员信息
* @param student 待更新的学员信息
* @return 执行结果
*/
int update(Student student);
- 接着,在StudentServiceImpl里实现,刚刚声明的函数
public Student selectByStuId(Integer stuId) {
return studentMapper.selectByStuId(stuId);
}
public List selectAll() {
return studentMapper.selectAll();
}
public int insert(Student student) {
return studentMapper.insert(student);
}
public int deleteById(Integer stuId) {
return studentMapper.deleteById(stuId);
}
public int update(Student student) {
return studentMapper.update(student);
}
- 在StudentController类里,添加一些方法,处理浏览器的请求,比如说查看所有的数据、通过ID来删除数据
@RequestMapping(value = "/viewAll")
public @ResponseBody String viewAll() {
List<Student> studentList = studentService.selectAll();
System.out.println("studentList:" + studentList);
return studentList.toString();
}
@RequestMapping(value = "/deleteById", method = RequestMethod.GET)
public String deleteById(@RequestParam("stuId") Integer stuId) {
if(studentService.deleteById(stuId) > 0 ) {
System.out.println("删除成功!");
} else {
System.out.println("删除失败!");
}
return "redirect:view?stuId=" + stuId;
}
9.运行效果,这里以查询所有为例
数据库中的数据