sql server mybatis模糊查询示例
时间: 2023-04-11 17:01:20 浏览: 201
可以回答这个问题。以下是一个 SQL Server MyBatis 模糊查询的示例:
```
<select id="selectUsersByName" resultType="User">
SELECT * FROM users WHERE name LIKE #{name}
</select>
```
在这个示例中,我们使用了 SQL Server 的 LIKE 操作符来进行模糊查询。在 MyBatis 中,我们可以使用 #{name} 占位符来传递查询参数。
相关问题
搭建mybatis框架,采用测试文件测试添加,删除,修改,更新,模糊查询的方法
以下是搭建MyBatis框架并进行基本操作的示例代码:
1. 首先,需要在maven中添加MyBatis和数据库驱动的依赖:
```xml
<dependencies>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
</dependencies>
```
2. 创建数据库表和对应的Java实体类,并在MyBatis配置文件中添加相关配置:
```xml
<!-- 数据库连接配置 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 映射器配置 -->
<mappers>
<mapper resource="mapper/UserMapper.xml" />
</mappers>
```
3. 创建映射器接口和对应的映射器XML文件,并在XML文件中编写对应的SQL语句:
UserMapper.java
```java
public interface UserMapper {
// 添加用户
void addUser(User user);
// 根据ID删除用户
void deleteUserById(Integer id);
// 修改用户
void updateUser(User user);
// 根据ID查询用户
User getUserById(Integer id);
// 模糊查询用户
List<User> getUserByKeyword(String keyword);
}
```
UserMapper.xml
```xml
<mapper namespace="com.example.mapper.UserMapper">
<!-- 添加用户 -->
<insert id="addUser" parameterType="com.example.entity.User">
insert into user(name, age, gender) values (#{name}, #{age}, #{gender})
</insert>
<!-- 根据ID删除用户 -->
<delete id="deleteUserById" parameterType="java.lang.Integer">
delete from user where id = #{id}
</delete>
<!-- 修改用户 -->
<update id="updateUser" parameterType="com.example.entity.User">
update user set name = #{name}, age = #{age}, gender = #{gender} where id = #{id}
</update>
<!-- 根据ID查询用户 -->
<select id="getUserById" parameterType="java.lang.Integer" resultType="com.example.entity.User">
select * from user where id = #{id}
</select>
<!-- 模糊查询用户 -->
<select id="getUserByKeyword" parameterType="java.lang.String" resultType="com.example.entity.User">
select * from user where name like concat('%', #{keyword}, '%') or gender like concat('%', #{keyword}, '%')
</select>
</mapper>
```
4. 创建测试类,并使用SqlSessionFactory和SqlSession获取Mapper接口实例进行数据库操作:
```java
public class UserMapperTest {
private static SqlSessionFactory sqlSessionFactory;
@BeforeClass
public static void setUp() throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testAddUser() {
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User("Tom", 18, "male");
mapper.addUser(user);
session.commit();
}
}
@Test
public void testDeleteUserById() {
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.deleteUserById(1);
session.commit();
}
}
@Test
public void testUpdateUser() {
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User(2, "Lucy", 20, "female");
mapper.updateUser(user);
session.commit();
}
}
@Test
public void testGetUserById() {
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.getUserById(2);
System.out.println(user);
}
}
@Test
public void testGetUserByKeyword() {
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> userList = mapper.getUserByKeyword("m");
for (User user : userList) {
System.out.println(user);
}
}
}
}
```
这样,就可以进行基本的增删改查和模糊查询操作了。
springboot 整合 mybatis-plus 分页 并查询mapper.xml
好的,下面是 Spring Boot 整合 MyBatis-Plus 进行分页查询的示例代码:
首先,需要在 pom.xml 中添加 MyBatis-Plus 和 MySQL 的依赖:
```xml
<dependencies>
<!-- MyBatis-Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
```
然后,需要在 application.properties 中配置 MySQL 数据库连接信息:
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
```
接下来,创建一个实体类和对应的 Mapper 接口:
```java
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
@Mapper
public interface UserMapper extends BaseMapper<User> {
IPage<User> selectUserPage(Page<User> page, @Param("name") String name);
}
```
其中,User 类是实体类,UserMapper 是 Mapper 接口,继承了 MyBatis-Plus 的 BaseMapper 接口。
注意,在 UserMapper 接口中,我们定义了一个名为 selectUserPage 的方法,它接受一个 Page 对象和一个 name 参数,返回一个 IPage 对象。这个方法将在 Controller 中调用,用于分页查询用户信息。
最后,编写 Controller 类,通过调用 UserMapper 中定义的 selectUserPage 方法来进行分页查询:
```java
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/users")
public IPage<User> getUserList(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
@RequestParam(required = false) String name) {
Page<User> page = new Page<>(pageNum, pageSize);
return userMapper.selectUserPage(page, name);
}
}
```
在 getUserList 方法中,我们首先创建了一个 Page 对象,表示要查询的分页信息。然后,调用 userMapper.selectUserPage 方法来进行分页查询,并将结果返回给前端。
最后,这里提供一个 Mapper.xml 文件的示例,用于实现分页查询:
```xml
<select id="selectUserPage" resultMap="BaseResultMap">
select *
from user
<if test="name != null">
where name like concat('%', #{name}, '%')
</if>
<if test="orderBy != null">
order by ${orderBy}
</if>
</select>
```
其中,selectUserPage 方法的实现与上面的示例代码类似,这里不再赘述。注意,这里使用了 MyBatis 的动态 SQL 功能,根据传入的参数来动态生成 SQL 语句。具体来说,如果传入了 name 参数,则会在 SQL 语句中添加一个 where 子句,用于按照用户名进行模糊查询;如果传入了 orderBy 参数,则会在 SQL 语句中添加一个 order by 子句,用于按照指定字段排序。
阅读全文