1动态代理的作用,进一步简化了代码,只需关注接口,而不在写实现类
2.新建mapper包,动态代理实现增删改查
2.1 UserMapper:
package mapper;
import com.gyf.model.student;
public interface UserMapper {
//对数据库插入数据
public void save(student student);
//查找
public student findUserId(int id);
//删除
public void deleteUser(int id);
//更新
public void updateStudent(student student);
}
2.2 UserMapper.xml:
<?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="mapper.UserMapper">
<insert id="save" parameterType="com.gyf.model.student">
insert into students (sno,name,age,school,pass)
value (#{sno},#{name},#{age},#{school},#{pass})
</insert>
<select id="findUserId" parameterType="int" resultType="com.gyf.model.student">
select * from students where id =#{id}
</select>
<update id="updateStudent" parameterType="com.gyf.model.student" >
update students set sno=#{sno},name=#{name},age=#{age},school=#{school},pass=#{pass}
where id=#{id}
</update>
<delete id="deleteUser" parameterType="int">
delete from students where id =#{id}
</delete>
</mapper>
3.配置数据库映射文件
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
4.创建测试类测试
package test;
import com.gyf.model.student;
import mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class demo {
SqlSession session;
@Before
public void before() throws IOException
{
InputStream is= Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(is);
session=sessionFactory.openSession();
}
@After
public void after()
{
session.commit();
}
@Test
public void Test() {
UserMapper userMapper = session.getMapper(UserMapper.class);
// 查找
// userMapper.findUserId(32760);
//插入
// student student3=new student("256","李四",25,"eggr","255");
// userMapper.save(student3);
// }
//更新
// student student4 = new student("256", "张四", 25, "eggr", "255");
// student4.setId(32762);
// userMapper.updateStudent(student4);
//删除
userMapper.deleteUser(32766);
}
}
5.总结使用动态代理极大地感受到mybatis的作用。