03-MyBatis 开发方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linzhaoliangyan/article/details/88637862

 * dao

public interface Userdao {
    /**
     * 根据用户sex查询用户信息
     * @param sex
     * @return
     */
    User findUserBySex(String sex);

    /**
     * 查询所有的用户
     * @return
     */
    List<User> findUsers();

    /**
     * 根据用户名称模糊查询用户列表
     * @param name
     * @return
     */
    List<User> findListUserByLikeName(String name);

    /**
     * 添加用户
     * @param user
     */
    void insert(User user);

    /**
     * 删除用户
     * @param id
     */
    void delete(int id);

    /**
     * 修改用户:根据id,修改用户名
     * @param id
     * @param username
     */
    void update(int id, String username);
}

 * 实现类

public class UserDaoImpl implements Userdao {
    @Override
    public User findUserBySex(String sex) {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        User user = sqlSession.selectOne("hx.findUserBySex",sex);
        MyBatisUtils.close(sqlSession);
        return user;
    }

    @Override
    public List<User> findUsers() {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        List<User> users = sqlSession.selectList("hx.findUsers");
        // 关闭SqlSession
        MyBatisUtils.close(sqlSession);
        return users;
    }

    @Override
    public List<User> findListUserByLikeName(String name) {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        List<User> users = sqlSession.selectList("hx.findUserByLikeName",name);
        return users;
    }

    @Override
    public void insert(User user) {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        sqlSession.insert("hx.insertUser",user);
        sqlSession.commit();
        // 关闭SqlSession
        MyBatisUtils.close(sqlSession);
    }

    @Override
    public void delete(int id) {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        sqlSession.delete("hx.deleteUserById",id);
        sqlSession.commit();
        // 关闭SqlSession
        MyBatisUtils.close(sqlSession);
    }

    @Override
    public void update(int id, String username) {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        User user=new User();
        user.setId(id);
        user.setUsername(username);
        sqlSession.update("updateUser",user);
        sqlSession.commit();
        // 关闭SqlSession
        MyBatisUtils.close(sqlSession);
    }
}

* sql配置文件

<?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="hx">
	<select id="findUserNameBySex" resultType="string">
		SELECT username FROM
		USER WHERE sex=#{sex}
	</select>

	<select id="findUserBySex" resultType="string">
		SELECT id,username,psw,sex FROM
			USER WHERE sex=#{sex}
	</select>
	<select id="findUsers" resultType="com.hx.hx02.bean.User">
		SELECT * FROM user;
	</select>

	<select id="findUserByLikeName" parameterType="string"
			resultType="com.hx.hx02.bean.User">
		SELECT * FROM USER WHERE username LIKE "%${value}%";
	</select>

	<insert id="insertUser" parameterType="com.hx.hx02.bean.User">
		INSERT INTO USER(username,psw,sex) VALUES(#{username},#{psw},#{sex});
	</insert>

	<delete id="deleteUserById" parameterType="int">
		DELETE FROM USER WHERE id=#{id};
	</delete>

	<update id="updateUser" parameterType="com.hx.hx02.bean.User">
		UPDATE USER SET username=#{username} WHERE id=#{id};
	</update>

</mapper>

*单元测试

public class UserDaoTest1 {

    /**
     * 查询所有user
     */
    @Test
    public void test1(){
        Userdao userdao=new UserDaoImpl();
        List<User> users = userdao.findUsers();
        for(User user:users){
            System.out.println(user);
        }
    }

    /**
     * 模糊查询
     */
    @Test
    public void test2(){
        Userdao userdao=new UserDaoImpl();
        List<User> users = userdao.findListUserByLikeName("xiao");
        for(User user:users){
            System.out.println(user);
        }
    }

    /**
     * 增加用户
     */
    @Test
    public void test3(){
        Userdao userdao=new UserDaoImpl();
        User user=new User();
        user.setUsername("刘德华");
        user.setPsw("123");
        user.setSex('男');
        userdao.insert(user);
    }

    /**
     * 删除用户
     */
    @Test
    public void test4(){
        Userdao userdao=new UserDaoImpl();
        userdao.delete(2);
    }

    /**
     * 更新用户
     */
    @Test
    public void test5(){
        Userdao userdao=new UserDaoImpl();
        userdao.update(3,"daming");
    }
}

  * mapper  

   Mapper代理的开发规范
    1、mapper接口的全限定名要和mapper映射文件的namespace值一致。
    2、mapper接口的方法名称要和mapper映射文件的statement的id一致。
    3、mapper接口的方法参数类型要和mapper映射文件的statement的parameterType的值一致,而且它的参数是一个。
    4、mapper接口的方法返回值类型要和mapper映射文件的statement的resultType的值一致。

public interface UserMapper {
    /**
     * 根据用户sex查询用户信息
     * @param sex
     * @return
     */
    User findUserBySex(String sex);

    /**
     * 查询所有的用户
     * @return
     */
    List<User> findUsers();

    /**
     * 根据用户名称模糊查询用户列表
     * @param name
     * @return
     */
    List<User> findUserByLikeName(String name);

    /**
     * 添加用户
     * @param user
     */
    void insertUser(User user);

    /**
     * 删除用户
     * @param id
     */
    void deleteUserById(int id);

    /**
     * 修改用户:根据id,修改用户名
     *
     */
    void updateUser(User user);
}
<?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="com.hx.hx02.mapper.UserMapper">
	<select id="findUserNameBySex" resultType="string">
		SELECT username FROM
		USER WHERE sex=#{sex}
	</select>

	<select id="findUserBySex" resultType="string">
		SELECT id,username,psw,sex FROM
			USER WHERE sex=#{sex}
	</select>
	<select id="findUsers" resultType="com.hx.hx02.bean.User">
		SELECT * FROM user;
	</select>

	<select id="findUserByLikeName" parameterType="string"
			resultType="com.hx.hx02.bean.User">
		SELECT * FROM USER WHERE username LIKE "%${value}%";
	</select>

	<insert id="insertUser" parameterType="com.hx.hx02.bean.User">
		INSERT INTO USER(username,psw,sex) VALUES(#{username},#{psw},#{sex});
	</insert>

	<delete id="deleteUserById" parameterType="int">
		DELETE FROM USER WHERE id=#{id};
	</delete>

	<update id="updateUser" parameterType="com.hx.hx02.bean.User">
		UPDATE USER SET username=#{username} WHERE id=#{id};
	</update>

</mapper>
<?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>
	<properties resource="dbconfig.properties"/>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url"
					value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="mapper/User.xml" />
		<mapper resource="mapper/User1.xml" />
	</mappers>
</configuration>
public class UserDaoTest2 {

    /**
     * 查询所有user
     */
    @Test
    public void test1(){
        SqlSession session = MyBatisUtils.getSqlSession();
        UserMapper userMapper = session.getMapper(UserMapper.class);
        List<User> users = userMapper.findUsers();
        for(User user:users){
            System.out.println(user);
        }
        MyBatisUtils.close(session);
    }

    /**
     * 模糊查询
     */
    @Test
    public void test2(){
        SqlSession session = MyBatisUtils.getSqlSession();
        UserMapper userMapper = session.getMapper(UserMapper.class);
        List<User> users = userMapper.findUserByLikeName("xiao");
        for(User user:users){
            System.out.println(user);
        }
        MyBatisUtils.close(session);
    }

    /**
     * 增加用户
     */
    @Test
    public void test3(){
        SqlSession session = MyBatisUtils.getSqlSession();
        UserMapper userMapper = session.getMapper(UserMapper.class);
        User user=new User();
        user.setUsername("刘德华123");
        user.setPsw("123");
        user.setSex('男');
        userMapper.insertUser(user);
        session.commit();
        MyBatisUtils.close(session);
    }

    /**
     * 删除用户
     */
    @Test
    public void test4(){
        SqlSession session = MyBatisUtils.getSqlSession();
        UserMapper userMapper = session.getMapper(UserMapper.class);
        userMapper.deleteUserById(3);
        session.commit();
        MyBatisUtils.close(session);
    }

    /**
     * 更新用户
     */
    @Test
    public void test5(){
        SqlSession session = MyBatisUtils.getSqlSession();
        UserMapper userMapper = session.getMapper(UserMapper.class);
        User user=new User();
        user.setId(6);
        user.setUsername("daming123");
        userMapper.updateUser(user);
        session.commit();
        MyBatisUtils.close(session);
    }
}

* 扩展知识:代理(静态代理,动态代理, ....)

        * 参考扩展代理文档

扫描二维码关注公众号,回复: 5573420 查看本文章

猜你喜欢

转载自blog.csdn.net/linzhaoliangyan/article/details/88637862