以下程序是在《 MyBatis(4)MyBatis入门程序 》 的基础上修改而来的。如果你没有从前面博客看过来,可以去《 MyBatis(4)MyBatis入门程序 》 中下载代码然后对照修改即可。
mapper namespace属性
mapper元素中的namespace属性在DAO开发中是为了程序之间的隔离,方便程序的管理。如果:
1、Mapper文件的名称与DAO接口的名称相同;
2、namespace的值与DAO接口的权限定类名相同;
3、select、update、delete、insert等语句的statement id与DAO接口中对应的方法名相同
则,可以采用Mapper代理的方法。
需求分析
对数据库中的用户表进行按ID查询、按用户名模糊查询、插入新用户、按ID删除用户、更新指定用户信息。
需求设计
DAO接口
public interface UserDao {
public UserPojo selectUserByID (int id) throws Exception;
public List<UserPojo> selectUserByName (String name) throws Exception;
public int insertUser (UserPojo user) throws Exception;
public void delUserByID (int id) throws Exception;
public void updateUser (UserPojo user) throws Exception;
}
Mapper文件
新建UserDao.xml(与DAO接口的名称UserDao相同 )映射文件,并且namespace的名称与UserDao接口的权限定类名相同
<?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="indi.latch.mybatis.dao.UserDao"></mapper>
根据ID查询用户信息(statement id与对应的方法名相同)
<!--根据ID查询用户信息-->
<select id="selectUserByID" parameterType="int" resultType="indi.latch.mybatis.pojo.UserPojo">
SELECT * FROM test.user WHERE id=#{id};
</select>
根据用户名查询用户信息(statement id与对应的方法名相同)
<!--根据名称模糊查询用户信息-->
<select id="selectUserByName" parameterType="String" resultType="indi.latch.mybatis.pojo.UserPojo">
SELECT * FROM test.user WHERE name LIKE '%${value}%'
</select>
新增加用户
<!--新增加用户-->
<insert id="insertUser" parameterType="indi.latch.mybatis.pojo.UserPojo">
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO `test`.`user`
(
`name`,
`pass`,
`sex`,
`address`
)
VALUES
(
#{name},
#{pass},
#{sex},
#{address}
)
</insert>
删除用户
<delete id="delUserByID" parameterType="int">
DELETE FROM test.user WHERE id = #{id};
</delete>
更新用户
<update id="updateUser" parameterType="indi.latch.mybatis.pojo.UserPojo">
UPDATE test.user SET name = #{name}, pass = #{pass}, sex=#{sex}, address=#{address} WHERE id = #{id};
</update>
测试
@Test
public void testSelectUser () throws Exception {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
System.out.println(userDao.selectUser());
sqlSession.close();
}
@Test
public void testSelectUserByID () throws Exception {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
System.out.println(userDao.selectUserByID(1));
sqlSession.close();
}
@Test
public void testSelectUserByName () throws Exception {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
System.out.println(userDao.selectUserByName("张"));
sqlSession.close();
}
@Test
public void testInsertUser () throws Exception {
UserPojo user = new UserPojo();
user.setName("张三龙");
user.setPass("Zhang Sanlong");
user.setSex(0);
user.setAddress("上海市 静安区");
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
userDao.insertUser(user);
sqlSession.commit();
System.out.println(user.getId());
sqlSession.close();
}
@Test
public void testUpdateUser () throws Exception {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
UserPojo user = new UserPojo();
user.setId(6); //insert方法返回的ID
user.setName("张三龙");
user.setPass("Zhang Sanlong");
user.setSex(1);
user.setAddress("上海市 静安区");
userDao.updateUser(user);
sqlSession.commit();
sqlSession.close();
}
@Test
public void testDeleteUser () throws Exception {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
userDao.delUserByID(6); //insert方法的ID
sqlSession.commit();
sqlSession.close();
}
代码
- git@code.csdn.net:xl890727/mybatisdemo.git
- https://code.csdn.net/xl890727/mybatisdemo.git
中的mapper分支