SSM框架学习之(二)Mybatis——mapper开发
首先看一下工程总体结构
配置Mybatis环境
Mybatis环境配置可见:
SSM框架学习之(一)Mybatis——mapper开发
Dao层和Service层开发
创建User实体类,类的成员属性对应数据库里的字段名,同时提供set和get方法
public class User { private int id; private String username; private String sex; private String birthday; private String address; ......
再就是编写Mapper接口
public interface UserMapper { User findUserById(int id); List<User> findUserByName(String name); void addUser(User user); void delUser(int id); }
整合Mybatis
创建mapper.xml文件,根据Dao接口编写mapper映射文件 <font color="red" size="4">注意此处的namespace的值是对应的Mapper接口的包名+类名</font> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.allene.mybatis.second.po.UserMapper"> <!-- 按ID查询用户 --> <select id="findUserById" parameterType="int" resultType="cn.allene.mybatis.first.po.User"> SELECT * FROM USER WHERE id=#{id} </select> <!-- 按名字模糊查询用户 --> <select id="findUserByName" parameterType="java.lang.String" resultType="cn.allene.mybatis.first.po.User"> SELECT * FROM USER WHERE username LIKE '%${value}%' </select> <!-- 添加用户 --> <insert id="addUser" parameterType="cn.allene.mybatis.first.po.User" > insert into user(username, birthday, sex, address) value(#{username}, #{birthday}, #{sex}, #{address}) </insert> <!-- 按ID删除用户 --> <delete id="delUser" parameterType="int"> delete from user where id=#{id} </delete> </mapper>
最后在SqlMapConfig.xml文件中添加mapper.xml映射文件
<mappers> <mapper resource="mapper/mapper.xml"/> </mappers>
最后测试Service层业务逻辑
这里使用到JUnit单元测试框架
public class UserTest {
SqlSessionFactory sqlSessionFactory;
@Before
public void before() throws IOException{
String resoure = "SqlMapConfig.xml";
InputStream urlAsStream = Resources.getResourceAsStream(resoure);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(urlAsStream);
}
@Test
public void findUserById(){
SqlSession session = sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.findUserById(1);
System.out.println(user);
}
@Test
public void findUserByName(){
SqlSession session = sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> list= mapper.findUserByName("小");
System.out.println(list);
}
@Test
public void addUser(){
SqlSession session = sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User(1, "张三", "男", System.currentTimeMillis()+"", "湖南省张家界市");
mapper.addUser(user);
}
@Test
public void delUser(){
SqlSession session = sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.delUser(22);
}
}