Mybatis

附件2

河南财经政法大学

计算机与信息工程学院 实验报告

 

实验项目名称 MyBatis中的config文件的配置 课程名称   java开源技术   成绩评定          

实验类型:验证型□综合型□设计型□  实验日期   2019/4/8   指导教师   靳志峰       

学生姓名   梁振振           学号    20163404017     专业班级   160707                           

一、实验项目训练方案

小组合作:是□ 否□

小组成员:

实验目的:

  1.掌握配置文件中别名的配置和使用

     2.掌握Mappper接口在注册文件中的注册和使用方法

     3.掌握SqlSessionFactoryUitl的使用

     4.掌握数据源的不同配置方法

实验内容:

       1.从外部db.properties中获取数据库配置信息,配置UNPOOLED数据数据源。    

students.sql学生表students表进行增删改查,基中查询包括按id查询,和按班级名、姓名模糊查询两个查询。请使用Mapper接口编编程,在Mapper.xml中使用Student类的别名定义参数和返回值类型。要有相关注释。

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 2019424日下午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 2019424日下午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 2019424日下午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测试

 

 

 

 

 

 

二、实验总结与评价

实验总结(包括实验数据分析、实验结果、实验过程中出现的问题及解决方法等):

感谢靳老师热心帮我改错!

 

对实验的自我评价:

自我学习能力有待加强,对于问题的解析能力有所改善。上课所学内容应该要灵活运用,多拓展知识面。


   

指导教师评语:

 

 

实验成绩评定:              指导教师(签名):            日期:   年  月  日

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值