发表于: 2018-09-18 20:21:08

1 474


今天完成的事情:

今天主要是Spring+mybatis整合

这是我的框架图

编写实体信息类

public class User {
private int id;
   private String name;
   private String email;

   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 getEmail() {
return email;
   }

public void setEmail(String email) {
this.email = email;
   }

@Override
   public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
'}';
   }
}

之后是mybatis配置全局文件:SqlMapConfig.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>
   <!--如果mapper.xmlmapper.java接口在同一个目录,此处可不定义mappers-->
   <mappers>
       <mapper resource="UserMapper.xml"/>
   </mappers>

</configuration>

这里与之前使用mybatis相比晒了数据库连接池的配置,这写配置在Spring的配置文件中配置

mybatis映射文件配置UserMapper.xml

<mapper namespace="UserMapper">
   <select id="findUserById" parameterType="int" resultType="User">
       select * from demo where id=#{id}
</select>
   <select id="findAllUser" resultType="User">
       select * from demo
</select>
   <select id="insertUser" parameterType="User">
       insert into demo(id,name,email) where values(#{id},#{name},#{email})
</select>
   <select id="deleteUSer" parameterType="int">
       delete from demo where id=#{id}
</select>
   <select id="updateUser" parameterType="User">
       update demo set name=#{name},eamil=#{email} where id=#{id}
</select>
</mapper>

主要是sql语句

编写DAO接口UserMapper

public interface UserMapper {
public User findUserById(int id);
   public void insertUser(User user);
   public void deleteUser(int id);
   public void updateUser(User user);
   public List<User> findAllUser();
}


之后是设置applicationContext.xml文件

<!--1.数据库连接交给Spring-->
<context:property-placeholder location="db.properties"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName" value="${driver}"/>
   <property name="url" value="${url}"/>
   <property name="username" value="${user}"/>
   <property name="password" value="${password}"/>
</bean>
<!--2.配置mybatissqlSessionFactory,需要注入全局配置文件和连接池-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
   <property name="configLocation" value="SqlMapConfig.xml"/>
   <property name="dataSource" ref="dataSource"/>
</bean>
<!--3.配置单mapper代理开发模式,通过id名获得mapper类对象,进而调用函数-->
<bean id="singleMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
   <property name="mapperInterface" value="UserMapper"/>
   <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>

之后是写测试类

@Test
public void testSingleMapper(){
String springxml="applicationContext.xml";
   ApplicationContext apx=new ClassPathXmlApplicationContext(springxml);
   //mapper要引用id
   UserMapper userMapper=(UserMapper)apx.getBean("singleMapper");
   User user=userMapper.findUserById(2);
   System.out.println(user);
}

得到的结果如下

但是在写查找所有信息和插入的时候报错

@Test
public void testFindAll(){
ApplicationContext apx=new ClassPathXmlApplicationContext("applicationContext");
   UserMapper userMapper=(UserMapper)apx.getBean("singleMapper");
   List<User> userAll =userMapper.findAllUser();
   System.out.println(userAll);
}
@Test
public void testInsert(){
ApplicationContext apx=new ClassPathXmlApplicationContext("applicationContext");
   UserMapper userMapper=(UserMapper)apx.getBean("singleMapper");
   User user=new User();
   user.setId(6);
   user.setName("熊二");
   user.setEmail("YY@YY");
   userMapper.insertUser(user);
}

报错如下

IOException parsing XML document from class path resource [applicationContext]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext] cannot be opened because it does not exist

这个暂时不知道怎么回事,明天来解决

明天计划的事情:

解决不能插入信息的问题

使用注解版Spring

遇到的问题:

注解不能成功的问题
收获:

了解了mybatis和Spring整合


返回列表 返回列表
评论

    分享到