User实体类
package com.atguigu.mybatis.pojo;
public class User {
private Integer id;
private String username;
private String password;
private Integer age;
private String sex;
private String email;
public User() {
}
public User(Integer id, String username, String password, Integer age, String sex, String email) {
this.id = id;
this.username = username;
this.password = password;
this.age = age;
this.sex = sex;
this.email = email;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", email='" + email + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Interface接口
public interface ParameterMapper {
/**
* MyBatis面向接口编程的两个一致
* 1、映射文件的namespace要和mapper接口的全类名保持一致
* 2、映射文件中SQL语句的id要和mapper接口中的方法名一致
*
* 表--实体--mapper接口--映射
*/
/**
* 验证登录(使用@param)
*/
User checkLoginByParam(@Param("sername") String username,@Param("assword") String password);
/**
* 添加用户信息
*/
int insertUser(User user);
/**
* 验证登录(参数为map)
*/
User checkLoginByMap(Map
/**
* 验证登录
*/
User checkLogin(String username,String password);
/**
* 根据用户名查询用户信息
*/
User getUserByUsername(String username);
/**
* 查询所有的员工信息
* @return
*/
List
}
连接数据库
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
测试类
public class ParameterMapperTest {
/**
* MyBatis 获取参数值的两种方式:${}和#{}
* ${}本质字符串拼接
* #{}本质占位符赋值
* MyBatis获取参数值的各种情况:
* 1、mapper接口方法的参数为单个的字面量类型
* 可以通过${}和#{}以任意的名称获取参数值,但是需要注意${}的单引号问题
* 2、mapper接口方法的参数为多个时
* 此时MyBatis会将这些参数放在一个map集合中,以两种方式进行存储
* a>以arg0,arg1...为键,以参数为值
* b>param1,param2...为键,以参数为值
* 因此只需要通过#{}和${}以键的方式访问值即可,但是需要注意${}的单引号问题
* 3.若mapper接口方法的参数有多个时,可以手动将这些参数放在一个map中存储
* 只需要通过#{}和${}以键的方式访问值即可,但是需要注意${}的单引号问题
* 4、mapper接口方法的参数是实体类类型的按参数
* 只需要通过#{}和${}以属性的方式访问属性值即可,但是需要注意${}的单引号问题
* 5、使用@param注解命名参数
* 此时MyBatis会将这些参数放在一个map集合中,以两种方式进行存储
* a>以@Param注解的值为键,以参数为值
* b>以param1,param2...为键,以参数为值
* 因此只需要通过#{}和${}以键的方式访问值即可,但是需要注意${}的单引号问题
*/
//下一步 进入到某个方法中 强制进入 从某个方法中返回 返回上一个断点 调转到光标所在的一行
@Test
public void testCheckLoginByParam(){
SqlSession sqlSession =SqlSessionUtils.getSqlSession();
ParameterMapper mapper=sqlSession.getMapper(ParameterMapper.class);
User user =mapper.checkLoginByParam("admin","123456");
System.out.println(user);
}
@Test
public void testCheckLoginsert() {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
int result = mapper.insertUser(new User(null, "李四","123",23,"男","123@qq.com"));
System.out.println(result);
}
@Test
public void testCheckLoginByMap() {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
Map
map.put("username", "admin");
map.put("password", "123456");
User user = mapper.checkLoginByMap(map);
System.out.println(user);
}
@Test
public void testCheckLogin() {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
User user = mapper.checkLogin("admin", "123456");
System.out.println(user);
}
@Test
public void testGetUserByUsername() {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
User user = mapper.getUserByUsername("admin");
System.out.println(user);
}
@Test
public void testGetAllUser() {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
List
list.forEach(user -> System.out.println(user));
}
@Test
public void testJDBC() throws Exception {
String username = "admin";
Class.forName("");
Connection connection = DriverManager.getConnection("", "", "");
//PreparedStatement ps = connection.prepareStatement("select*from t_user where username='" + username + "'");
PreparedStatement ps = connection.prepareStatement("select * from t_user where username=?");
ps.setString(1, username);
}
}