三、mybatis(xml注解)----crmd

1.查询所有数据

接口代码

    /**
     * 查询所有用户数据
     * @return
     */
    List<User> findAll();

xml配置文件代码

    <!--    查询所有用户-->
    <select id="findAll" resultType="com.itheima.domain.User">
        select * from user;
    </select>

 

 

测试代码

 /**
     * 测试查询所有对象
     */
    @Test
    public void testFindAll (){
        //5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for(User user : users){
            System.out.println(user);
        }
    }

  

 

2.添加用户数据  

接口代码

 /**
     * 添加用户
     */
    void saveUser(User user);

 

xml配置文件代码

<!--    添加一个用户-->
    <insert id="saveUser" parameterType="com.itheima.domain.User">
        insert into user(username,birthday,sex,address)
        values(#{username},#{birthday},#{sex},#{address})
    </insert>

 

 

测试代码

    /**
     * 测试添加用户
     */
    @Test
    public void testSave(){
        User user = new User();
        user.setUsername("小花");
        user.setBirthday(new Date());
        user.setSex("男");
        user.setAddress("台湾");
        userDao.saveUser(user);
    }

 

 

3.修改用户数据

接口代码

  

    /**
     * 修改用户
     */
    void updateUser(User user);

 

xml配置文件代码

<!--修改用户-->
    <update id="updateUser" parameterType="com.itheima.domain.User">
        update user set username=#{username},birthday=#{birthday},sex=#{sex},
        address=#{address} where id=#{id}
    </update>

 

测试代码

    /**
     * 测试修改用户信息
     */
    @Test
    public void testUpdateUser(){
        User user = new User();
        user.setId(49);
        user.setUsername("葫芦娃");
        user.setBirthday(new Date());
        user.setSex("女");
        user.setAddress("香港");
        userDao.updateUser(user);
    }

 

4.删除用户数据

接口代码

    /**
     * 删除用户
     *
     */

    void deleteUser(Integer userId);

 

xml配置文件代码

    <!--删除用户-->
    <delete id="deleteUser" parameterType="Integer">
        delete from user where id=#{id};
    </delete>

 

 

测试代码

    /**
     * 测试删除用户信息
     */
    @Test
    public void testDelete(){
        userDao.deleteUser(51);
    }

 5.根据用户id查询用户

接口代码

 

   /**
     * 根据用户id查询用户信息
     * @param id
     * @return
     */
    User findById(Integer id);

 

xml配置文件代码

 

<!--    根据id查询一个用户信息-->
    <select id="findById" parameterType="Int" resultType="com.itheima.domain.User">
        select * from user where id=#{id};
    </select>

 

 

测试代码

    /**
     * 根据id查询用户数据
     */
    @Test
    public void testFindOne(){
        User user = userDao.findById(45);
        System.out.println(user);
    }

 

 

 6.模糊查询

接口代码

 

    /**
     * 使用模糊查询
     */
    List<User> findByName(String userName);

 

xml配置文件代码

 

    <!--    使用模糊查询-->
    第一种写法,需要在方法加%%(常用)
    <select id="findByName" parameterType="String" resultType="com.itheima.domain.User">
        select * from user where username like #{username};
    </select>

第二种写法,不需要在方法加%%(不常用) <select id="findByName" parameterType="String" resultType="com.itheima.domain.User"> select * from user where username like '%${value}%'; </select>

 

 

测试代码

    /**
     * 使用模糊查询用户数据
     */
第一种
@Test public void testFindByName(){ List<User> users = userDao.findByName("%王%");//注意这里 for(User user:users){ System.out.println(user); } }
第二种

    @Test
    public void testFindByName(){
List
<User> users = userDao.findByName("王");//注意这里 for(User user:users){ System.out.println(user); } }

 

 7.添加一组数据,同时获得他的id值

接口代码

    /**
     * 添加用户
     */
    void saveUser(User user);

 

xml配置代码

<!--    添加一个用户;同时获得用户的id值-->
    <insert id="saveUser" parameterType="com.itheima.domain.User">

        <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
            select last_insert_id();
        </selectKey>

        insert into user(username,birthday,sex,address)
        values(#{username},#{birthday},#{sex},#{address})
    </insert>

 

 

测试代码

 

    /**
     * 测试添加用户,同时获得添加之后id值
     */
    @Test
    public void testSave(){
        User user = new User();
        user.setUsername("mybatis inserid");
        user.setBirthday(new Date());
        user.setSex("女");
        user.setAddress("香港");

        System.out.println("保存操作之前:" + user);
        userDao.saveUser(user);
        System.out.println("保存操作之后:" + user);

    }

 8.通过Queryvo实体类中的条件进行查询

创建实体类

package com.itheima.domain;

public class QueryVo {
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}

 

接口方法

    /**
     * 根据queryvo中的查询条件查询用户
     * @param vo
     * @return
     */
    List<User> findUserByVo(QueryVo vo);

 

xml配置

<!--    根据queryVo中的条件查询-->
    <select id="findUserByVo" parameterType="com.itheima.domain.QueryVo" resultType="com.itheima.domain.User">
        select * from user where username like #{user.username};
    </select>

 

 

测试代码

    /**
     * 使用QueryVo条件查询数据
     */
    @Test
    public void testFindByVo(){

        User user = new User();
        QueryVo vo = new QueryVo();
        user.setUsername("%王%");
        vo.setUser(user);

        List<User> users = userDao.findUserByVo(vo);
        for(User u:users){
            System.out.println(u);
        }
    }

 9.实体类和数据库名称对不上解决办法

一、起别名

 

    <!--    实体类和数据库名字对不上-->
    <select id="findById" parameterType="Int" resultType="com.itheima.domain.User">
        select id as userId,username as userName,address ad userAddress,sex as userSex,
        birthday as userBirthday from user;
    </select>

 

二、配置属性(注意前面是数据库名称,后面是实体类名称)

<!--    id:名字随便起,需要和下面查询resultMap相对应
        type:实体类全限定类名
-->
    <resultMap id="userMap" type="com.itheima.domain.User">
<!--        id需要和主键对应
            property:实体类主键
            column:数据库主键
-->
        <id property="userId" column="id"></id>

        <result property="userName" column="username"></result>
        <result property="userBirthday" column="birthday"></result>
        <result property="userSex" column="sex"></result>
        <result property="userAddress" column="address"></result>
    </resultMap>
<!--    注意这里的resultMap要和上线resultMap的id一致-->
    <select id="findById" resultMap="userMap">
        select * from user;
    </select>

。。。

 

posted @ 2021-11-08 16:39  江南0o0  阅读(56)  评论(0编辑  收藏  举报