1.在接口中写方法
User testLogin(User userInfo);
2.在配置文件中写sql
<select id="testLogin" parameterType="com.by.pojo.User" resultType="com.by.pojo.User">
select * from user where username='${username}' and password='${password}'
</select>
3.在测试类进行测试
private InputStream inputStream;
private SqlSession sqlSession;
@Before
public void before() throws IOException {
String rescource = "mybatis-config.xml";
//加载配置文件
inputStream =Resources.getResourceAsStream(rescource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//获得数据的会话实例
sqlSession=sqlSessionFactory.openSession();
}
/**
* sql注入
* @throws IOException
*/
@Test
public void testLogin()throws IOException {
UserDao userDao = sqlSession.getMapper(UserDao.class);
User userInfo=new User();
userInfo.setUsername("张三丰");
userInfo.setPassword("111");
User user = userDao.testLogin(userInfo);
System.out.println(user);
}
@After
public void close() throws IOException {
/**
* 关闭资源
*/
sqlSession.close();
inputStream.close();
}
运行结果
1.在接口中写方法
User testLogin(User userInfo);
2.在配置文件中写sql
<select id="testLogin" parameterType="com.by.pojo.User" resultType="com.by.pojo.User">
select * from user where username='${username}' and password='${password}'
</select>
3.在测试类进行测试
private InputStream inputStream;
private SqlSession sqlSession;
@Before
public void before() throws IOException {
String rescource = "mybatis-config.xml";
//加载配置文件
inputStream =Resources.getResourceAsStream(rescource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//获得数据的会话实例
sqlSession=sqlSessionFactory.openSession();
}
/**
* sql注入
* @throws IOException
*/
@Test
public void testLogin()throws IOException {
UserDao userDao = sqlSession.getMapper(UserDao.class);
User userInfo=new User();
userInfo.setUsername("张三丰 ' #");
userInfo.setPassword("123");
User user = userDao.testLogin(userInfo);
System.out.println(user);
}
@After
public void close() throws IOException {
/**
* 关闭资源
*/
sqlSession.close();
inputStream.close();
}
运行结果
1.在接口中写方法
User testLogin(User userInfo);
2.在配置文件中写sql
<select id="testLogin" parameterType="com.by.pojo.User" resultType="com.by.pojo.User">
select * from user where username=#{username} and password=#{password}
</select>
3.在测试类进行测试
private InputStream inputStream;
private SqlSession sqlSession;
@Before
public void before() throws IOException {
String rescource = "mybatis-config.xml";
//加载配置文件
inputStream =Resources.getResourceAsStream(rescource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//获得数据的会话实例
sqlSession=sqlSessionFactory.openSession();
}
/**
* sql注入
* @throws IOException
*/
@Test
public void testLogin()throws IOException {
UserDao userDao = sqlSession.getMapper(UserDao.class);
User userInfo=new User();
userInfo.setUsername("张三丰");
userInfo.setPassword("111");
User user = userDao.testLogin(userInfo);
System.out.println(user);
}
@After
public void close() throws IOException {
/**
* 关闭资源
*/
sqlSession.close();
inputStream.close();
}
运行结果
1.在接口中写方法
User testLogin(User userInfo);
2.在配置文件中写sql
<select id="testLogin" parameterType="com.by.pojo.User" resultType="com.by.pojo.User">
select * from user where username=#{username} and password=#{password}
</select>
3.在测试类进行测试
private InputStream inputStream;
private SqlSession sqlSession;
@Before
public void before() throws IOException {
String rescource = "mybatis-config.xml";
//加载配置文件
inputStream =Resources.getResourceAsStream(rescource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//获得数据的会话实例
sqlSession=sqlSessionFactory.openSession();
}
/**
* sql注入
* @throws IOException
*/
@Test
public void testLogin()throws IOException {
UserDao userDao = sqlSession.getMapper(UserDao.class);
User userInfo=new User();
userInfo.setUsername("张三丰 ' #");
userInfo.setPassword("123");
User user = userDao.testLogin(userInfo);
System.out.println(user);
}
@After
public void close() throws IOException {
/**
* 关闭资源
*/
sqlSession.close();
inputStream.close();
}
运行结果
${}和#{}的区别
sql注入 底层 jdbc类型转换 单个简单类型的参数
$ 不防止 Statement 不转换 value
# 防止 preparedStatement 转换 任意
结论:除模糊匹配外,杜绝使用${}