附件2
河南财经政法大学
计算机与信息工程学院 实验报告
实验项目名称 MyBatis中的config文件的配置 课程名称 java开源技术 成绩评定
实验类型:验证型□综合型□设计型□ 实验日期 2019/4/8 指导教师 靳志峰
学生姓名 梁振振 学号 20163404017 专业班级 160707
一、实验项目训练方案
小组合作:是□ 否□ | 小组成员: |
实验目的: 1.掌握配置文件中别名的配置和使用 2.掌握Mappper接口在注册文件中的注册和使用方法 3.掌握SqlSessionFactoryUitl的使用 4.掌握数据源的不同配置方法 实验内容: 1.从外部db.properties中获取数据库配置信息,配置UNPOOLED数据数据源。 对 2.从context.xml文件中获取数据库的配置信息,配置JNDI类型的数据源,写一个Servlet,一个JSP文件测试,JSP文件用于从表单输入输入数据,Servlet用于完成把表单的数据插入到student表中,按数据格式输入数据,可以先不考虑异常情况。 工程名:ssm08_姓名拼音_序号。
| |
实验场地及仪器、设备和材料: 场地:实验楼五楼教室 应用软件:eclipse | |
实验训练内容(包括实验原理和操作步骤): StudentMapper.java /** * */ package cn.edu.huel.lzz.mapper;
import java.util.List;
import cn.edu.huel.lzz.pojo.Student;
/** *@auther 梁振振 *@version 2019年4月24日下午2:27:30 */
public interface StudentMapper { /** * 根据ID查找Student * @param id * @return */ public Student findStudentById(int id); /** *插入一个学生 * @param student * @return */ public int addStudent(Student student); /** * 根据ID删除Student * @param id * @return */ public int deleteStudentById(int id); /** * 修改用户信息 * @param student * @return */ public int updateStudent(Student student); /** * 根据班级和姓名模糊查询 * @return */ public List<Student> findStudentsByNameClass(String name);
} StudentMapper.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="cn.edu.huel.lzz.mapper.StudentMapper"> <!-- 封装返回值Map --> <resultMap type="student" id="resultMap"> <id property="id" column="id"/> <result property="classname" column="classname"/> <result property="name" column="name"/> <result property="birthday" column="birthday"/> </resultMap> <select id="findStudentsByNameClass" parameterType="string" resultMap="resultMap" > select * from students where concat(classname,name) like concat('%',#{value},'%'); </select> <select id="findStudentById" parameterType="Integer" resultType="cn.edu.huel.lzz.pojo.Student"> select * from students where id=#{value} </select>
<insert id="addStudent" parameterType="student" keyProperty="id" useGeneratedKeys="true"> insert into students(classname,name,birthday) values(#{classname},#{name},#{birthday}) </insert> <delete id="deleteStudentById" parameterType="Integer"> delete from students where id = #{value} </delete> <update id="updateStudent" parameterType="student" > update students set classname=#{classname},name=#{name}, birthday=#{birthday} where id = #{id} </update> </mapper> Student.java /** * */ package cn.edu.huel.lzz.pojo;
import java.util.Date;
/** *@auther 梁振振 *@version 2019年4月24日下午2:23:52 */
public class Student { private Integer id; private String classname; private String name; private Date birthday; /** * @param id * @param classname * @param name * @param birthday */ public Student(Integer id, String classname, String name, Date birthday) { super(); this.id = id; this.classname = classname; this.name = name; this.birthday = birthday; } /** * */ public Student() { super(); } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Student [id=" + id + ", classname=" + classname + ", name=" + name + ", birthday=" + birthday + "]"; } /** * @return the id */ public Integer getId() { return id; } /** * @param id the id to set */ public void setId(Integer id) { this.id = id; } /** * @return the classname */ public String getClassname() { return classname; } /** * @param classname the classname to set */ public void setClassname(String classname) { this.classname = classname; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the birthday */ public Date getBirthday() { return birthday; } /** * @param birthday the birthday to set */ public void setBirthday(Date birthday) { this.birthday = birthday; }
} MyStudentServlet.java package cn.edu.huel.lzz.servlet;
import java.io.IOException; import java.util.Date;
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import org.apache.ibatis.session.SqlSession;
import cn.edu.huel.lzz.mapper.StudentMapper; import cn.edu.huel.lzz.pojo.Student; import cn.edu.huel.lzz.util.SqlSessionUtil;
/** * Servlet implementation class MyCustomerServlet */ @WebServlet("/MyStudentServlet") public class MyStudentServlet extends HttpServlet { private static final long serialVersionUID = 1L;
/** * Default constructor. */ public MyStudentServlet() { // TODO Auto-generated constructor stub }
/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* //1.把配置文件转成输入流 InputStream inputStream = Resources.getResourceAsStream("Mybatis-Config.xml"); //2.解析输入流,变成会话工厂 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //3.通过会话工厂,获取一个sqlSession */ SqlSession sqlSession = SqlSessionUtil.getSqlSession(); //4.执行语句,参数是语句的全路径,和语句所需要的参数 // Customer customer = sqlSession.selectOne("cn.edu.huel.teacher.mapper.CustomerMapper.findCustmoerById",2); String classname = request.getParameter("classname"); String name = request.getParameter("name");
Student student = new Student(0, classname, name,new Date()); StudentMapper mapper = sqlSession.getMapper(StudentMapper.class); int row = mapper.addStudent(student); sqlSession.commit(); sqlSession.close(); if(row>0){
response.getWriter().println("success"); } else{ response.getWriter().println("error"); }
}
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }
} StudentTest.java /** * */ package cn.edu.huel.lzz.test;
import java.util.Date; import java.util.List;
import org.apache.ibatis.session.SqlSession; import org.junit.Test;
import cn.edu.huel.lzz.mapper.StudentMapper; import cn.edu.huel.lzz.pojo.Student; import cn.edu.huel.lzz.util.SqlSessionUtil;
/** *@auther 梁振振 *@version 2019年4月24日下午2:37:11 */ public class StudentsTest {
@Test public void findStudentById(){ Integer id = 2; SqlSession sqlsession = SqlSessionUtil.getSqlSession(); StudentMapper sm = sqlsession.getMapper(StudentMapper.class); Student student = sm.findStudentById(id); System.out.println(student); } @Test public void addStudent(){ SqlSession sqlsession = SqlSessionUtil.getSqlSession(); StudentMapper sm = sqlsession.getMapper(StudentMapper.class);
Student student = new Student(0,"160707","赵六",new Date()); int row = sm.addStudent(student); System.out.println(row); System.out.println(student); sqlsession.commit(); // sqlsession.close(); } @Test public void deleteStudent(){
SqlSession sqlsession = SqlSessionUtil.getSqlSession(); StudentMapper sm = sqlsession.getMapper(StudentMapper.class); int row = sm.deleteStudentById(5); if(row>0){ System.out.println("删除成功"); }else{ System.out.println("删除失败"); } sqlsession.commit(); } @Test public void updateStudent(){ Integer id = 2; SqlSession sqlsession = SqlSessionUtil.getSqlSession(); StudentMapper sm = sqlsession.getMapper(StudentMapper.class); Student student = new Student(2,"160707","改改",new Date()); int row = sm.updateStudent(student); if(row>0){ System.out.println("改改成功"); }else{ System.out.println("改改失败"); } sqlsession.commit(); } @Test public void findStudentByNameClass(){ //模糊查询 SqlSession sqlsession = SqlSessionUtil.getSqlSession(); StudentMapper sm = sqlsession.getMapper(StudentMapper.class); List <Student> students = sm.findStudentsByNameClass("1507"); for(Student s : students){ System.out.println(s); } }
} SqlSessionUtil.java package cn.edu.huel.lzz.util;
import java.io.IOException; import java.io.InputStream;
import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SqlSessionUtil { private static SqlSessionFactory sqlSessionFactory; static {//静态代码块只执行一次, //1.把配置文件转成输入流 InputStream inputStream; try { inputStream = Resources.getResourceAsStream("Mybatis-Config.xml"); //2.解析输入流,变成会话工厂 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //3.通过会话工厂,获取一个sqlSession
} catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
} public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } } Db.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/students jdbc.username=root jdbc.password=root jdbc.MaximumACon=50 log4j.properties # Global logging configuration log4j.rootLogger=ERROR, stdout # MyBatis logging configuration... log4j.logger.cn.edu.huel.lzz.mapper=TRACE # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n Mybatis-Config.xml <?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> <properties resource="db.properties"/> <!-- <properties url="http://localhost:8080/db/db.properties"/> --> <typeAliases> <!-- 单个起别名 --> <!-- <typeAlias alias="student" type="cn.edu.huel.lzz.pojo.Student"/> --> <!-- 扫描包批量起别名,默认类名小写 --> <package name="cn.edu.huel.lzz.pojo"/>
</typeAliases> <environments default="mysql"> <environment id="mysql"> <transactionManager type="jdbc"/> <!-- 使用POOLED数据源和引入配置文件db.properties --> <!-- <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <property name="poolMaximumActiveConnections" value="${jdbc.MaximumACon}"/>
</dataSource> --> <!-- 使用JNDI数据源需要启动Tomcat --> <dataSource type="JNDI"> <property name="data_source" value="java:comp/env/jdbc/students"/> </dataSource> </environment>
</environments> <mappers> <!-- <mapper resource="cn/edu/huel/teacher/mapper/CustomerMapper.xml"/> --> <!-- <mapper class="cn.edu.huel.teacher.mapper.CustomerMapper"/> --> <package name="cn.edu.huel.lzz.mapper"/> </mappers> </configuration> Test.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="MyStudentServlet"> 请输入班级名:<input type="text" name="classname"><br/> 请输入姓名:<input type="text" name="name"><br/>
<input type="submit" value="提交">
</form>
</body> </html> 测试结果:JNDI测试
| |
|
二、实验总结与评价
实验总结(包括实验数据分析、实验结果、实验过程中出现的问题及解决方法等): 感谢靳老师热心帮我改错!
|
对实验的自我评价: 自我学习能力有待加强,对于问题的解析能力有所改善。上课所学内容应该要灵活运用,多拓展知识面。
|
指导教师评语:
实验成绩评定: 指导教师(签名): 日期: 年 月 日 |