MyBatis基础使用二
配置Mybatis参考MyBatis基础用法一
基本的CRUD
接口UserMapper
package com.wfy.mapper;
import com.wfy.pojo.User;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
public interface UserMapper {
//根据用户名查询用户
/**这里为了节省时间使用了注解编写查询语句
* MyBatis获取参数值的两种方式:${}和#{}
* ${}的本质就是字符串的拼接,#{}的本质就是占位符赋值
* ${}使用字符串的方式拼接sql,若为字符串或日期类型的字段进行赋值时,需要手动加单引号
* #{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号
* */
// @Select("select * from user where username=#{username}")
@Select("select * from user where username='${username}'")
List<User> SelectUserByName(String username);
/**若mapper接口方法的参数放在map集合中,以两种方式存储数据
* 1.以arg0,arg1...为键,以参数为值
* 2.以param1,param2....为键,以参数为值
* 因此,只需要通过#{}和${}访问map集合的键,就可以获取相应的值,一定要注意${}的单引号问题
* 这里通过注解的方式设置Param的键的值,此时MyBatis会将这些参数放在map中,以两种方式进行存储
* 1.以@Param注解的value属性值为键,以参数为值
* 2.以param1,param2,param3.....为键,以参数为值
* */
List<User> SelectUser(@Param("username") String username, @Param("password") String password);
/**
* 由于传输多个参数是放在map集合中的值,因此我们可以自己设置map集合来直接获取键的值
* */
User SelectByMap(Map<String,Object> map);
//新增数据
int InsertUser(User user);
/*
* 通过map集合查询全部数据
* 若查询的数据有多条时,并且要将每条数据转换为map集合
*此时有两种解决方案:
* 1.将mapper接口方法的返回值设置为泛型是map的list集合
* List<Map<String,Object>> SelectAllByMap(); ----返回值无顺序
* 2.可以将每条数据转换的map集合存放在一个大的map中,但是必须要通过@Mapkey注解将查询的某个字段的值作为大的map的键
* @MapKey("id") //设置键
* Map<String ,Object> SelectAllByMap()-----返回值以id键为顺序
* 结果:
{
1={password=123456, gender=男, id=1, age=20, [email protected], username=任凌飞}, 3={password=224466, gender=男, id=3, age=20, [email protected], username=绫小路清隆},
4={password=123456, gender=男, id=4, age=20, [email protected], username=任凌飞}, 6={password=12581, gender=男, id=6, age=20, [email protected], username=折木奉太郎}
*}
* */
@MapKey("id") //设置键
Map<String ,Object> SelectAllByMap();
//模糊查询
List<User> SelectUserByLike(String username);
}
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">
<mapper namespace="com.wfy.mapper.UserMapper">
<insert id="InsertUser">
insert into user values (null,#{username},#{password},#{age},#{gender},#{email})
</insert>
<select id="SelectUser" resultType="User">
select * from user where username=#{username} and password=#{password}
</select>
<select id="SelectByMap" resultType="com.wfy.pojo.User">
select * from user where username=#{username} and password=#{password}
</select>
<select id="SelectAllByMap" resultType="java.util.Map">
select * from user
</select>
<select id="SelectUserByLike" resultType="com.wfy.pojo.User">
select * from user where username like "%"#{username}"%"
</select>
</mapper>
测试类
package com.wfy.MyBatisTest;
import com.wfy.mapper.UserMapper;
import com.wfy.pojo.User;
import com.wfy.utils.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
public class MyBatisTest {
@Test
public void SelectByName(){
SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.SelectUserByName("任凌飞");
for(User user : users){
System.out.println(user);
}
}
@Test
public void SelectUser(){
SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.SelectUser("任凌飞", "123456");
for (User user:users
) {
System.out.println(user);
}
}
@Test
public void SelectByMap(){
SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map= new HashMap<>();
map.put("username","绫小路清隆");
map.put("password","224466");
User user = mapper.SelectByMap(map);
System.out.println(user);
}
@Test
public void InsertUser(){
SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i = mapper.InsertUser(new User(null, "折木奉太郎", "12581", 20, "男", "[email protected]"));
if (i>0){
System.out.println("插入成功~");
}else {
System.out.println("插入失败~");
}
}
@Test
public void SelectAllByMap(){
SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> stringObjectMap = mapper.SelectAllByMap();
//{1={password=123456, gender=男, id=1, age=20, [email protected], username=任凌飞}, 3={password=224466, gender=男, id=3, age=20, [email protected], username=绫小路清隆},
// 4={password=123456, gender=男, id=4, age=20, [email protected], username=任凌飞}, 6={password=12581, gender=男, id=6, age=20, [email protected], username=折木奉太郎}}
System.out.println(stringObjectMap);
}
@Test
public void SelectUserByLike(){
SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> list = mapper.SelectUserByLike("任");
list.forEach(System.out::println);
}
}
上述所使用的基础用法
-
MyBatis获取参数值的两种方式:${} 和#{}
-
${}的本质就是字符串的拼接,#{}的本质就是占位符赋值
-
${}使用字符串的方式拼接sql,若为字符串或日期类型的字段进行赋值时,需要手动加单引号
-
{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号
-
-
若mapper接口方法的参数放在map集合中,以两种方式存储数据
-
- 以arg0,arg1...为键,以参数为值
-
- 以param1,param2....为键,以参数为值
-
因此,只需要通过#{}和${}访问map集合的键,就可以获取相应的值,一定要注意${}的单引号问题
-
这里通过注解的方式设置Param的键的值,此时MyBatis会将这些参数放在map中,以两种方式进行存储
-
- 以@Param注解的value属性值为键,以参数为值
-
- 以param1,param2,param3.....为键,以参数为值
-
-
通过map集合查询全部数据
-
若查询的数据有多条时,并且要将每条数据转换为map集合
*此时有两种解决方案:* 1. 将mapper接口方法的返回值设置为泛型是map的list集合 * List<Map<String,Object>> SelectAllByMap(); ----返回值无顺序 * 2. 可以将每条数据转换的map集合存放在一个大的map中,但是必须要通过@Mapkey注解将查询的某个字段的值作为大的map的键 * @MapKey("id") //设置键 * Map<String ,Object> SelectAllByMap()-----返回值以id键为顺序 * 结果: ```java { 1={password=123456, gender=男, id=1, age=20, [email protected], username=任凌飞}, 3={password=224466, gender=男, id=3, age=20, [email protected], username=绫小路清隆}, 4={password=123456, gender=男, id=4, age=20, [email protected], username=任凌飞}, 6={password=12581, gender=男, id=6, age=20, [email protected], username=折木奉太郎} } ```
- 模糊查询的三种方式
- 第一种模糊查询的方式
select * from user where username like '%${username}%'
- 第二种模糊查询的方式
select * from user where username like concat('%',#{username},'%')
- 第三种模糊查询的方式
select * from user where sername like "%"#{username}"%"
标签:username,map,mapper,基础,使用,MyBatis,password,com,id
From: https://www.cnblogs.com/wfy-studying/p/16811783.html