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接口中的方法名一致
*<p>
*表--实体--mapper接口--映射
*/
/**
*验证登录(使用@param)
*/
User checkLoginByParam(@Param("sername") String username,@Param("assword") String password);
/**
*添加用户信息
*/
int insertUser(User user);
/**
*验证登录(参数为map)
*/
User checkLoginByMap(Map<String,Object> map);
/**
*验证登录
*/
User checkLogin(String username,String password);
/**
*根据用户名查询用户信息
*/
User getUserByUsername(String username);
/**
*查询所有的员工信息
*@return
*/
List<User> getAllUser();
}
连接数据库
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--连接jdbc-->
<properties resource="jdbc.properties"/>
<!--设置类型别名-->
<typeAliases>
<!--<typeAlias type="com.atguigu.mybatis.pojo.User" alias="test"></typeAlias>-->
<!--以包为单位设置别名-->
<package name="com.atguigu.mybatis.pojo"/>
</typeAliases>
<!--连接数据库的坏境-->
<environments default="development">
<!--
environment:配置某个具体的环境
属性:id表示连接数据库的环境变量的唯一标识,不能重复
-->
<environment id="development">
<!--事务管理器-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--引入的映射文件-->
<mappers>
<!--<mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
<package name="com.atguigu.mybatis.mapper"/>
</mappers>
</configuration>
测试类
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<String, Object> map = new HashMap<>();
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<User> list = mapper.getAllUser();
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);
}
}