步骤:
环境搭建
1 配置文件
pom.xml
mybatis-config.xml
2 工具类编写
mybatis使用
1.写接口
2.映射文件,sql
3.测试
映射文件UserMapper.xml
<!-- id对应的dao的方法-->
<!-- resultType:结果类型-->
<!-- parameterType:参数类型-->
<?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.wang.mybatis.dao.UserMapper">
<!-- id对应的dao的方法-->
<!-- resultType:结果类型-->
<!-- parameterType:参数类型-->
<select id="findUsers" resultType="com.wang.mybatis.pojo.User">
select * from mybatis.USER
</select>
<select id="findUserById" resultType="com.wang.mybatis.pojo.User" parameterType="int">
select * from USER where id = #{id}
</select>
<insert id="saveUser" parameterType="com.wang.mybatis.pojo.User" >
insert into user (username, birthday, sex, address) values (#{username},#{birthday},#{sex},#{address})
</insert>
<update id="updateUser" parameterType="com.wang.mybatis.pojo.User" >
update user set username = #{username} , birthday = #{birthday} , sex = #{sex} , address = #{address} where id = #{id}
</update>
<delete id="deleteUserById" parameterType="int" >
delete from user where id = #{id}
</delete>
<!--当parameterType为map时,参数可以通过map传入,更加灵活,例如可以根据自定义的key在sql中使用对应的value-->
<insert id="saveUserByMap" parameterType="map">
insert into user (username) values (#{userName})
</insert>
</mapper>
parameterType
map 使用
当实体中字段太多时,用map更方便。
Mapper.xml
map中put一个key为userName的键,在sql中可以#{userName}取值。
<!--当parameterType为map时,参数可以通过map传入,更加灵活,例如可以根据自定义的key在sql中使用对应的value-->
<insert id="saveUserByMap" parameterType="map">
insert into user (username) values (#{userName})
</insert>
测试类方法
利用map传入表字段username的值,调用对应方法insert 到表里面
@Test
public void testMap(){
SqlSession sqlSession = MybatisUtils.getSessioin();
Map map = new HashMap();
// 利用map传入表字段username的值,调用对应方法insert 到表里面
map.put("userName","wangzhipan");
sqlSession.getMapper(UserMapper.class).saveUserByMap(map);
sqlSession.commit();
sqlSession.close();
}
执行之后:
模糊查询:
mapper.xml
<select id="findUsersByLike" resultType="com.wang.mybatis.pojo.User" >
select * from user where username like #{value}
</select>
测试方法
@Test
public void testLike(){
SqlSession sqlSession = MybatisUtils.getSessioin();
// 模糊查询,在入参中组装 %%
List<User> userList =sqlSession.getMapper(UserMapper.class).findUsersByLike("%wang%");
for (User user:userList) {
System.out.println(user);
}
sqlSession.close();
}
sql注入问题
select * from user where username= 'wang' ;
sql注入方式:
传入的是 wang' OR '1'='1
替换之后,查询的结果就不一样了:
SELECT * FROM USER t WHERE t.username = 'wang' OR '1'='1';