mybatis动态代理开发及 简单代码示例

本文介绍了MyBatis的动态代理开发方式,重点在于Mapper接口的使用和与Mapper.xml文件的配合。内容包括:Mapper.xml的命名空间需与接口全路径一致,接口方法名与sql id对应,输入输出类型匹配。示例涵盖了根据用户ID查询、模糊查询用户列表、获取所有用户、添加、修改和删除用户等操作。文中还提到了所需的jar包、实体类、Mapper配置、日志配置和测试类等。
摘要由CSDN通过智能技术生成

Mapper的动态代理开发方式:

Mapper的动态代理开发 程序员只用关心 Mapper接口(Dao接口),mybatis会根据接口定义 创建 接口的代理对象(代理对象在这里就是之前的dao、层实现类)

Mapper的动态代理开发方式的规范:

  1. Mapper.xml文件中namespace 必须和mapper对应的接口 全路径保持一致
  2. mapper接口中 方法名必须和Mapper.xml文件中的 sql id 相同
  3. mapper接口中 方法的输入参数类型必须和Mapper.xml文件中的 输入映射类型一致
  4. mapper接口中 方法的返回值类型 必须和Mapper.xml文件中的输出映射类型一致

提供一个简单的业务需求:

  1. 查询一个用户( 根据用户id)
  2. 模糊查询用户列表(根据用户名)
  3. 查询全部用户信息
  4. 添加用户
  5. 修改用户
  6. 删除用户(根据用户id)

提醒:注释都在java块代码中(注意区分注释和代码) 暂时没有spring

首先在lib包中加入各种jar包(前面mabatis入门文档中有)

com.bean创建一个User对象
在这里插入图片描述
com.mapper配置UserMapper.java文件

package com.mapper;

import java.util.List;

import com.bean.User;

public interface UserMapper {
   

	/**
	 * 根据用户id查询用户
	 * 
	 * @param id
	 * @return User
	 * */
	User queryUserById(int id);

	/**
	 * 根据用户 关键字 模糊查询用户信息
	 * 
	 * @param id
	 * @return User
	 * */
	List<User> queryUserByName(String username);

	// 查询全部用户
	List<User> queryUserAll();

	// 添加用户
	void addUser(User user);

	// 修改用户
	void updateUserById(User user);

	// 根据用户id删除用户
	void deleteUserById(int id);

}

com.mapper配置UserMapper.xml文件

<?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">
<!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用: 使用动态代理时,namespace的值必须和mapper的接口全路径保持一致 -->
<mapper namespace="com.mapper.UserMapper">

<!--
	id:当前sql语句的唯一标识
	parameterType:输入参数的类型,mybatis从输入的对象中 读取参数 进行sql语句的封装
	resultType:返回值的类型(自动映射的前提  (数据库字段必须和pojo类的属性完全一致))
	#{
    } 输入参数的占位符 ==jdbc中的? 通过PreparedStatement可以防止sql注入 ; 可以接受的参数有:简单数据类型  或者pojo(对象类型) 强调:自动将java类型转化成jdbc类型
	${
    } 表示字符串的拼接,通过statement进行拼接(存在sql注入问题);可以接受的参数有:简单数据类型${
   value}必须是value  或者pojo(对象类型) 强调:不会将java类型转化成jdbc类型
  -->
<!--根据id查询  -->
	<select id="queryUserById" parameterType="int" resultType="User">
		select * from user where id=#{
   id}
	</select>
	
<!--模糊查询  -->
	<select id="queryUserByName" parameterType="String" resultType="user">
		select *from user where username like "%"#{
   username}"%"
	</select>
	
	<!--模糊查询的另外几种方式  -->
	<!-- <select id="queryUserByName1" parameterType="String" resultType="user">
		select *from user where username like '%${value}%'
	</select>
	
	<select id="queryUserByName2" parameterType="String" resultType="user">
		select *from user where username like #{
   username}
	</select>
	
	<select id="queryUserByName3" parameterType="String" resultType="user">
		select *from user where  instr(username,#{
   username})>0
	</select> --
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值