Mybatis学习
CRUD
namespace
namespace中的包名要和Dao/mapper接口的包名一致!
select
选择,查询语句
- id:就是对应的namespace中的方法名
- resultType:Sql语句执行的返回值
- parameterType:参数类型
1、编写接口
// 根据id查询用户
// 方法存在多个参数,所有参数前面必须加上@Param注解
User getUserById(int id);
2、编写对应mapper中的SQL语句
注:若IDEA没有连数据库,直接写表名就好,即将mybatis.user改为user即可
<select id="getUserById" parameterType="int" resultType="com.lyh.pojo.User">
select * from mybatis.user where id = #{id}
</select>
3、测试,注意:增删改需要提交事务
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
Insert
<insert id="addUser" parameterType="com.lyh.pojo.User">
insert into mybatis.user (id, username, pwd) values (#{id},#{username},#{pwd})
</insert>
Update
<update id="updateUser" parameterType="com.lyh.pojo.User">
update mybatis.user set username = #{username}, pwd=#{pwd} where id = #{id}
</update>
Delete
<delete id="deleteUserById" parameterType="int">
delete from mybatis.user where id = #{id}
</delete>
注意点:
- 增删改需要提交事务
// 提交事务
sqlSession.commit();
模糊查询
// 模糊查询用户
List<User> getUserLike(String value);
<select id="getUserLike" resultType="com.lyh.pojo.User">
select * from user where username like concat("%", #{value }, "%")
</select>
Map
假设我们的实体类,或者数据库中的表,字段或者参数过多,我们可以考虑使用Map
1、编写接口
int addUser2(Map<String,Object> map);
2、编写对应mapper中的SQL语句
<insert id="addUser2" parameterType="map">
insert into mybatis.user (id, username, pwd) values (#{userid},#{username},#{password})
</insert>
3、测试,注意:增删改需要提交事务
public void addUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Object> map = new HashMap<>();
map.put("userid",5);
map.put("username","hello");
map.put("password","123");
int count = mapper.addUser2(map);
if (count>0){
System.out.println("插入成功!");
}
// 提交事务
sqlSession.commit();
sqlSession.close();
}
Map传递参数,直接在sql中取出key即可!
对象传递参数时,直接在sql中取对象的属性即可
只有一个基本类型参数的情况下,可以直接在sql中取到
多个参数用Map,或者注解