Mybatis学习笔记二

Mybatis学习笔记二

基于代理Dao实现CRUD操作

学习前提:

  • 持久层接口和持久层接口的映射配置必须在相同的包下
  • 持久层映射配置中 mapper 标签的 namespace 属性取值必须是持久层接口的全限定类名
  • SQL 语句的配置标签,,,的 id 属性必须和持久层接口的
    方法名相同。
  • 环境搭建可参照我的上一篇博客Mybatis学习笔记一

根据ID查询用户方法

1.在持久层接口中添加findById方法

/**
* 根据id查询
* @param userId
* @return
*/
User findById(Integer userId);

2.在用户的映射文件中配置

<!-- 根据id查询用户-->
<select id="findById" parameterType="INT" resultType="com.mybatis.domain.User">
    select * from user where id = #{uid}
</select>
<!--
resultType 属性:
	用于指定结果集的类型。
parameterType 属性:
	用于指定传入参数的类型。
sql 语句中使用#{}字符: 它代表占位符,相当于原来 jdbc 部分所学的?,都是用于执行语句时替换实际的数据。
具体的数据是由#{}里面的内容决定的。
#{}中内容的写法:
	由于数据类型是基本类型,所以此处可以随意写。
-->

3.编写测试类(测试类初始化配置参照上条博客)

@Test
public void testFindOne(){
    User  user = userDao.findById(49);
    System.out.println(user);
}

新增用户方法

1.在持久层接口中添加saveUser方法

/**
 * 新增用户
 * @param user
 */
void saveUser(User user);

2.在用户的映射文件中配置

<insert id="saveUser" parameterType="com.mybatis.domain.User">
        <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
        <!-- 同时取到用户新增后的ID -->
            select last_insert_id();  
        </selectKey>
        insert into user(username,address,sex,birthday)value(#{username},#{address},#{sex},#{birthday})
</insert>

3.编写测试类

@Test
public void testSave(){
    User user = new User();
    user.setUsername("gaoyk");
    user.setAddress("北京市顺义区");
    user.setSex("男");
    user.setBirthday(new Date());
    System.out.println("保存操作之前:"+user);
    //5.执行保存方法
    userDao.saveUser(user);
    System.out.println("保存操作之后:"+user);
}

更新用户方法

1.在持久层接口中添加updateUser方法

/**
 * 更新用户
 * @param user
 */
void updateUser(User user);

2.在用户的映射文件中配置

<update id="updateUser" parameterType="com.mybatis.domain.User">
        update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id}
</update>

3.编写测试类

 */
@Test
public void testUpdate(){
    User user = new User();
    user.setId(49);
    user.setUsername("更新后用户");
    user.setAddress("北京市顺义区");
    user.setSex("女");
    user.setBirthday(new Date());
    userDao.updateUser(user);
}

根据ID删除用户方法

1.在持久层接口中添加deleteUser方法

/**
 * 根据id删除用户
 * @param userId
 */
void deleteUser(Integer userId);

2.在用户的映射文件中配置

<delete id="deleteUser" parameterType="java.lang.Integer">
        delete from user where id = #{uid}
</delete>

3.编写测试类

@Test
public void testDelete(){
    userDao.deleteUser(48);
}

查询所有用户方法

1.在持久层接口中添加findAll方法

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

2.在用户的映射文件中配置

<select id="findAll" resultType="com.mybatis.domain.User">
        select * from user
</select>

3.编写测试类

@Test
public void testFindAll(){
    List<User> users = userDao.findAll();
    for(User user : users){
        System.out.println(user);
    }
}

模糊查询用户方法

1.在持久层接口中添加findByName方法

/**
 * 模糊查询用户
 * @param username
 * @return
 */
List<User> findByName(String username);

2.在用户的映射文件中配置

<select id="findByName" parameterType="string" resultType="com.mybatis.domain.User">
        select * from user where username like #{name}
</select>

3.编写测试类

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

查询用户总数方法

1.在持久层接口中添加findTotal方法

/**
 * 返回用户总数
 * @return
 */
int findTotal();

2.在用户的映射文件中配置

<select id="findTotal" resultType="int">
        select count(id) from user;
</select>

3.编写测试类

@Test
public void testFindTotal(){
    int count = userDao.findTotal();
    System.out.println(count);
}

本篇博客就讲解到这里,如果发现任何问题或产生疑问请直接指出
参考教程:[黑马教育]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

囿于之间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值