发表于: 2018-09-18 20:21:08
1 475
今天完成的事情:
今天主要是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.xml和mapper.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.配置mybatis的sqlSessionFactory,需要注入全局配置文件和连接池-->
<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整合
评论