Mybatis学习(持续更新中)
mapper.xml文件
执行流程
1.加载mybatis的核心配置文件,获取SqlSessionFactory1
2
3String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
2.获取SqlSession对象1
SqlSession sqlSession = sqlSessionFactory.openSession();
3.执行sql,返回user列表1
List<User> users = sqlSession.selectList("demo.mapper.UserMapper.selectAll");
4.释放资源
1 | sqlSession.close(); |
查询
1 | <!-- |
查询所有
1 | <select id="selectAll" resultMap="brandResultMap"> |
1 | List<Brand> selectAll(); |
查询详情
1 | <select id="selectById" resultType="User"> |
1 | User selectById(); |
条件查询

1
2
3
4
5
6
7<select id="selectByCondition" resultMap="brandResultMap">
select * from tb_brand
where
status = #{status}
and company_name like #{companyName} <!--模糊查询-->
and brand_name like #{brandName} <!--模糊查询-->
</select>1
2
3
4//@Param意思是将status的值传递给‘status’的占位符
List<Brand> selectByCondition(@Param("status")int status,@Param("companyName")String companyName,@Param("brandName")String brandName);
//把参数封装成brand,selectByCondition将自动调用getStatus...用于查询
List<Brand> selectByCondition(Brand brand);
动态条件查询
if:
1 | <select id="selectByCondition" resultMap="brandResultMap"> |
问题:若第一个if不成立

解决:

改进:
使用
自动生成
动态单条件查询

添加

或者可以手动commit1
sqlSession.commit();
主键返回

1
<insert useGeneratedKeys="true" keyProperty="id">
1 | brandMapper.add(brand); |
修改
修改全部字段
修改部分字段
删除
删除一个
1 | void deleteByid(int id); |
1 | <delete id="deleteByid"> |
删除多个
1 | <!-- |
1 | void deleteByids(@Param("ids") int[] ids); |
<delete id="deleteByids">
delete from tb_brand where id <!--分隔符-->
in <foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
;
</delete>
注解开发
第一种:方法有多个参数,需要 @Param 注解
第二种:方法参数要取别名,需要 @Param 注解
第三种:XML 中的 SQL 使用了 $ ,那么参数中也需要 @Param 注解
第四种,那就是动态 SQL ,如果在动态 SQL 中使用了参数作为变量,那么也需要 @Param 注解,即使你只有一个参数。
@Param参考
动态sql参考
