【JAVA - SSM】之MyBatis的ParameterType的使用

没有检索到摘要

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在MyBatis的Mapper.xml文件中,参数的表示方法有两种:一种是使用 “#{XXX}” 的方式表示的,另一种是使用 “${XXX}” 的方式表示的。今天来介绍以下这两种方式的不同之处。


1、#{XXX}

        “#{XXX}” 是用来表示变量占位符,即将这个变量注入到SQL语句中。这里的变量可以是普通类型的变量(int、java.lang.String、long等),也可以是自定义POJO类中的某个属性(如name、sex等)。不管是普通类型还是POJO,只需要记住一点,这是用作一个完全独立的变量。

        一个例子的代码如下:

<mapper namespace="test">
	<select id="findEmployeeById" parameterType="int" resultType="com.itgungnir.hellomybatis.bean.Employee">
		SELECT * FROM EMP WHERE empno=#{id}
	</select>
</mapper>
        这里就是说,在这个SQL语句中将注入一个int类型的变量,作为查询条件中empno的查询条件注入。

2、${XXX}

        “${XXX}” 是用来表示字符串拼接的占位符。当需要在SQL语句中进行字符串的拼接时,就需要用到 “${XXX}” 符号。

        一个例子的代码如下:

<select id="findEmployeeByName" parameterType="java.lang.String" resultType="com.itgungnir.hellomybatis.bean.Employee">
	SELECT * FROM EMP WHERE ename LIKE '%${value}%'
</select>
        这里就是说,在这个SQL语句中将注入一个String类型的变量,作为ename的模糊查询条件。由于这里是使用了字符串的拼接('%%' 符号中间夹着我们注入的字符串),因此必须使用 “${XXX}” 符号。

        这里还需要注意一点,如果parameterType中传入的是一个自定义的POJO类型的对象,那么我们在使用 “${XXX}” 符号拼接字符串的时候可以使用POJO中的属性名,如 “${name}” ;而如果我们使用的是简单类型,如int、java.lang.String等类型,那么就只能使用 “${value}” 。

SSM框架中使用MyBatis需要进行以下几个步骤: 1. 引入MyBatisMyBatis-Spring的依赖包 在Maven项目中,可以在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>{mybatis-version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>{mybatis-spring-version}</version> </dependency> ``` 2. 配置MyBatis 在Spring配置文件中,需要配置MyBatis的SqlSessionFactory和MapperScannerConfigurer,具体配置如下: ``` <!-- MyBatis SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- 配置MyBatis全局配置文件 --> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> <!-- MyBatis MapperScannerConfigurer --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="{mapper-package}"/> </bean> ``` 其中,{mapper-package}是指定Mapper接口所在的包名。 3. 编Mapper接口和Mapper XML文件 在MyBatis中,Mapper接口用于定义数据库操作,Mapper XML文件用于实现具体的SQL语句。例如,定义一个UserMapper接口,其对应的Mapper XML文件如下: ``` <!-- UserMapper.xml --> <mapper namespace="com.example.UserMapper"> <!-- 查询所有用户 --> <select id="getAllUsers" resultType="com.example.User"> SELECT * FROM users </select> <!-- 根据ID查询用户 --> <select id="getUserById" parameterType="int" resultType="com.example.User"> SELECT * FROM users WHERE id = #{id} </select> <!-- 添加用户 --> <insert id="addUser" parameterType="com.example.User"> INSERT INTO users(name, age) VALUES(#{name}, #{age}) </insert> <!-- 根据ID删除用户 --> <delete id="deleteUserById" parameterType="int"> DELETE FROM users WHERE id = #{id} </delete> <!-- 更新用户信息 --> <update id="updateUser" parameterType="com.example.User"> UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id} </update> </mapper> ``` 4. 在Service中调用Mapper接口 在Service中注入Mapper接口的实例,即可调用Mapper接口中定义的方法进行数据库操作。例如,定义一个UserService接口,其实现类如下: ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public List<User> getAllUsers() { return userMapper.getAllUsers(); } @Override public User getUserById(int id) { return userMapper.getUserById(id); } @Override public void addUser(User user) { userMapper.addUser(user); } @Override public void deleteUserById(int id) { userMapper.deleteUserById(id); } @Override public void updateUser(User user) { userMapper.updateUser(user); } } ``` 以上就是在SSM框架中使用MyBatis的基本步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值