发表于: 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 ,就可以直接获取接口,使用接口中的方法。
评论