发表于: 2017-09-28 10:46:09

2 729


今天完成的事情:
一、整合spring和mybatis,写测试方法,测试数据库操作增删改查

(1)新建项目,目录如下

(2)  新建模型model ,user对应数据库里数据表

package com.lhq.task.model;

public class User {

    private int id;

    private String name;

    private String qq_num;

    private String type;

    private String college;

    private String stu_num;

    private String start_day;

    private String url;

    private String ambition;

    private String senior;

    private String info;

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getQq_num() {

        return qq_num;

    }

    public void setQq_num(String qq_num) {

        this.qq_num = qq_num;

    }

    public String getType() {

        return type;

    }

    public void setType(String type) {

        this.type = type;

    }

    public String getCollege() {

        return college;

    }

    public void setCollege(String college) {

        this.college = college;

    }

    public String getStu_num() {

        return stu_num;

    }

    public void setStu_num(String stu_num) {

        this.stu_num = stu_num;

    }

    public String getStart_day() {

        return start_day;

    }

    public void setStart_day(String start_day) {

        this.start_day = start_day;

    }

    public String getUrl() {

        return url;

    }

    public void setUrl(String url) {

        this.url = url;

    }

    public String getAmbition() {

        return ambition;

    }

    public void setambition(String ambition) {

        this.ambition = ambition;

    }

    public String getSenior() {

        return senior;

    }

    public void setSenior(String senior) {

        this.senior = senior;

    }

    public String getInfo() {

        return info;

    }

    public void setInfo(String info) {

        this.info = info;

    }

    @Override

    public String toString() {

        return "User{" +

                "id=" + id +

                ", name='" + name + '\'' +

                ", qq_num='" + qq_num + '\'' +

                ", type='" + type + '\'' +

                ", college='" + college + '\'' +

                ", stu_num=" + stu_num +

                ", start_day=" + start_day +

                ", url='" + url + '\'' +

                ", ambition='" + ambition + '\'' +

                ", senior='" + senior + '\'' +

                ", info='" + info + '\'' +

                '}';

    } 

}

(3)db.properties.设置连接MySQL数据库的信息

#jdbc

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/task?characterEncoding=utf8&useSSL=true

jdbc.uid=root

jdbc.pwd=1234

(4)新建ApplicationContext.xml并配置Spring bean信息

<?xml version="1.0" encoding="UTF-8"?>

<beans  xmlns="http://www.springframework.org/schema/beans"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xmlns:context="http://www.springframework.org/schema/context"

        xsi:schemaLocation="http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/context

        http://www.springframework.org/schema/context/spring-context-4.3.xsd">

    <!--1.占位文件引入,可以通过${属性名}获得属性文件中的内容-->

    <context:property-placeholder location="db.properties"/>

    <bean id="jdbcDataSource"

          class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

        <property name="driverClass" value="${jdbc.driver}" />

        <property name="jdbcUrl" value="${jdbc.url}" />

        <property name="user" value="${jdbc.uid}" />

        <property name="password" value="${jdbc.pwd}" />

        <property name="acquireIncrement" value="5"></property>

        <property name="initialPoolSize" value="50"></property>

        <property name="minPoolSize" value="5"></property>

        <property name="maxPoolSize" value="100"></property>

    </bean>

    <!--2. 创建一个sqlsessionFactory工厂类,指定数据源 -->

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

        <!-- 1指定数据源 -->

        <property name="dataSource" ref="jdbcDataSource"></property>

        <!-- 2类型别名包,默认引入model下的所有类 -->

        <property name="typeAliasesPackage" value="com.lhq.task.model"></property>

        <!-- 3.指定mapper.xml映射文件的路径 -->

        <property name="mapperLocations" value=" com/lhq/task/dao/*Mapper.xml"></property>

    </bean>

    <!--3创建一个userDAO-->

    <bean id="userDAO" class="org.mybatis.spring.mapper.MapperFactoryBean">

        <!--指定映射文件 -->

        <property name="mapperInterface" value="com.lhq.task.dao.UserDAO"></property>

        <!-- 指定sql会话工厂-->

        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>

    </bean>

</beans>

(5)新建DAO层userdao接口,定义数据增删改查方法

package com.lhq.task.dao;

import com.lhq.task.model.User;

import java.util.List;

public interface UserDAO{

    //查询列表所有信息

    public List<User>getAllUser();

    //查询单个数据byID

    public User getOneUser(int id);

    

    //插入数据

    public void insertUser (User user);

    //删除数据by id

    public void deleteUser (int id );

    //更新数据

    public void updateUser (User user);

}

(6)新建 UserMapper.xml,建立映射关系,并写入MySQL语句

<?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.lhq.task.dao.UserDAO">

    <!--查询user列表-->

    <select id="getAllUser" resultType="com.lhq.task.model.User">

        select * from USER ;

    </select>

    

    <!--查询user通过id查询-->

    <select id="getOneUser"  parameterType="int" resultType="com.lhq.task.model.User">

        select * from USER WHERE id =#{id};

    </select>

    

    <!--插入数据-->

    <insert id="insertUser"  parameterType="User" >

    insert into user 

    (name,qq_num,type,college,stu_num,start_day,url,ambition,senior,info)

    values

    (#{name},#{qq_num},#{type},#{college},#{stu_num},#{start_day},#{url},#{nambition},#{senior},#{info})

    </insert>

    

<!--更新数据by id-->

<update id="updateUser"  parameterType="User">

update user set name=#{name},qq_num=#{qq_num},type=#{type},college=#{college},

stu_num=#{stu_num},start_day=#{start_day},url=#{url},ambition=#{ambition},senior=#{senior},info=#{info}

where id=#{id}

</update>

<!--删除数据by id-->

<delete id="deleteUser" parameterType="int">

delete from user where id=#{id}

</delete>

</mapper>

(7)最后写测试类

package com.lhq.task;

import com.lhq.task.dao.UserDAO;

import com.lhq.task.model.User;

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;

import org.junit.BeforeClass;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

public class TestUserDAO {

public static ApplicationContext context=null;

public static UserDAO userDAO=null;

@BeforeClass

public static void getcontext() {

context = new ClassPathXmlApplicationContext("ApplicationContext.xml");

userDAO = (UserDAO) context.getBean("userDAO");

}

    //测试getAllUse方法

    @Test

    public void getAllUseTest() {

        //获取userList

        List<User> getUserList = userDAO.getAllUser();

        for (User user : getUserList) {

            System.out.println(user);

        }

    }

    

    //测试getOneUser方法

    @Test

    public void getOneUserTest() {

        User one =userDAO.getOneUser(1);

        System.out.println(one);

    }

    

    //测试insertUser方法

    @Test

    public void insertUserTest() {

    User one=new User();

    one.setName("李四");

    one.setQq_num("123456");

    one.setambition("宇宙第一");

    one.setCollege("社会大学");

    one.setInfo("网络");

    one.setSenior("张三");

    one.setStart_day("2017-09-15");

    one.setStu_num("1234");

    one.setUrl("www.baidu.com");

    one.setType("java工程师");

    userDAO.insertUser(one);

    }

    

    //测试删除

    @Test

    public void deleteUserTest() {

    userDAO.deleteUser(2);

   

    }

   

    //测试更新数据

    @Test

    public void updateUserTest() {

    User user=userDAO.getOneUser(1);

    user.setambition("测试一下数据是够传入");

    userDAO.updateUser(user);

   

    }

    

}

(8)运行测试类,结果

insertusertest方法报错了,报错信息如下:

 There is no getter for property named 'nambition' in 'class com.lhq.task.model.User'

明天的计划:

1.继续排查错误信息,修改代码

遇到的问题:

1.上述insert插入数据方法错了,报错信息显示没有获取getter方法属性是“nambition”

收获:

1.spring整合mybatis之后就不需要设置mybatis的配置文件,只需要配置一个spring的配置文件Applicationcontext.XML文件就可以了,然后定义Bean ,就可以直接获取接口,使用接口中的方法。


返回列表 返回列表
评论

    分享到