发表于: 2017-08-06 23:19:02
2 1015
今天完成的事情:Spring 初步写了一下 主要是配置文件
创建了一个简单的数据库表 代码如下
CREATE TABLE user (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(20) NOT NULL,
password varchar(20) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
随便插入一条数据
用IDEA新建个maven项目 添加相关依赖
结构基本遵循以前的样子 java下新建个model包 下面写个实体类 运用get set方法
package model;
public class User {
private int id;
private String username;
private String password;
public User( ){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String toString(){
return "User [id = "+ id +" , username = "+ username +" , password = "+ password +" ] ";
}
}
java下面新建Dao包 下面新建UserMapper.java作为Dao接口
package Dao;
import model.User;
public interface UserMapper {
public User selectUser(User user);
public void insertUser(User user);
public void updateUser(User user);
public void deleteUser(int userId);
}
再新建一个UserMapper.xml文件 实现Dao接口(注意 这里的xml要建立在resource下)
<?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="Dao.UserMapper">
<select id="selectUser" parameterType="model.User" resultType="model.User">
SELECT * FROM user WHERE username=#{username} AND password=#{password}
</select>
<insert id="insertUser" parameterType="model.User" flushCache="true">
INSERT INTO user (id,username,password) VALUES (#{id},#{username},#{password})
</insert>
<update id="updateUser" parameterType="model.User">
UPDATE user SET password=#{password} WHERE id=#{id}
</update>
<delete id="deleteUser" parameterType="int">
DELETE FROM user WHERE id=#{userId}
</delete>
</mapper>
在src下创建一个mybatis-config.xml文件,由于我们的数据源部分是要交给Spring管理,所以此处的配置文件只包含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>
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
在src下创建一个applicationContext.xml文件作为Spring的配置文件,这里参照网上教程使用Spring自带的Jdbc数据源,可以根据实际需要替换为其他数据源。
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!--配置数据源 jdbc-->
<bean id="jdbcDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/first_a?useUnicode=true&characterEncoding=UTF-8</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>123123</value>
</property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="jdbcDataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="Dao.UserMapper"></property>
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
</beans>
最后 在src下创建一个test包,并在其下创建一个test.java文件 运行
import Dao.UserMapper;
import model.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.IOException;
public class test {
public static void main(String[] args) throws IOException{
ApplicationContext ctx = null;
ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper userMapper = (UserMapper) ctx.getBean("userMapper");
User u = new User();
u.setUsername("admin");
u.setPassword("admin");
System.out.println(userMapper.selectUser(u));
//插入(去掉下面的注释进行调试)
/*
User insertUser=new User();
insertUser.setUsername("testUsername");
insertUser.setPassword("testPassword");
userMapper.insertUser(insertUser);
*/
//更新(去掉下面的注释进行调试)
/*
u.setId(1);
u.setPassword("updatePassword");
userMapper.updateUser(u);
*/
//删除(去掉下面的注释进行调试)
/*
userMapper.deleteUser(9);
*/
}
}
明天计划的事情:使用接口而不是xml试试 今天卡bug卡了半天进度太慢了 没来得及 继续看Spring 尝试Spring与navicate联合 配置文件也还有点没搞懂
遇到的问题:遇到很多困难 很多错误 大部分是拼写错误 大小写错误
这个是找不到文件 文件不存在 也是前后名称不一致导致的
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist
解析XML文档的类路径资源嵌套异常 类的路径不存在 地址错了
收获:Ctrl +Shift +F 快速查找 比如大小写错误 就可以使用这个 快速查找
xml文件一般要写在resource下 否则需要进行以下设置
<!-- dao继承于manager,manager依赖common,依赖传递到dao -->
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。MAVEN会默认扫描
resource根目录下的xml -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
评论