查询所有
问题:列的名称和Bean的属性名不一样,导致无法封装查询结果。
解决1()不常用:取别名:
select id, brand_name as brandName, company_name companyName, ordered, description, status from tb_brand
解决2:使用ResultMap标签手动映射结果
select * from tb_brand
解决3:在mybatis-config.xml核心配置文件中开启驼峰命名自动映射【推荐】
查询详情
#{}和KaTeX parse error: Expected 'EOF', got '#' at position 8: {}的区别? #̲{}占位符在程序运行的时候会被…{}不会,${}会直接被值替换。
添加品牌
返回自增的主键id值
XML配置:
... ...
注解配置
@Insert("... ...)")
@Options(useGeneratedKeys = true,keyProperty = "id")
void add(Brand brand);
多条件查询
//mapper接口 ListseleteCondition(Brand brand);
映射配置文件中
//测试类中
@Test
public void seletecondition() throws IOException {
InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(stream).openSession();
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
Brand brand = new Brand();
brand.setBrandName("松鼠");
brand.setCompanyName("松鼠");
for (Brand brand1 : mapper.seleteCondition(brand)) {
System.out.println(brand1);
}
sqlSession.close();
}
单条件
ListseleteSingle(Brand brand);
@Test
public void seletesingle() throws IOException {
InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(stream).openSession();
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
Brand brand = new Brand();
brand.setBrandName("华为");
brand.setCompanyName("松鼠");
for (Brand brand1 : mapper.seleteSingle(brand)) {
System.out.println(brand1);
}
sqlSession.close();
}
修改部分
//mapper接口中 void update(Brand brand);
映射配置文件中update tb_brand where id=#{id} brand_name = #{brandName}, company_name=#{companyName}
//测试类中
@Test
public void upDate() throws IOException {
InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(stream).openSession(true);
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
Brand brand = new Brand();
brand.setBrandName("良品铺子");
brand.setCompanyName("良品铺子有限");
brand.setId(1);
mapper.update(brand);
sqlSession.close();
}
批量删除
//mapper接口中
void delectparty(@Param("arr") int[] arr);
映射配置文件中delete from tb_brand where id in #{id}
//测试类中
@Test
public void select() throws IOException {
InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSession sqlSession = new SqlSessionFactoryBuilder().build(stream).openSession(true);
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
int[] arr={1,2};
mapper.delectparty(arr);
sqlSession.close();
}
参数传递
1、当参数是基本类型、包装类类型、String类型时,参数占位符中的名称可以任意写,但是一般写成变量名。
2、当参数是javabean类型,参数占位符中的名称是bean的属性名。如果参数是map集合类型,那么参数占位符中的名称就是map集合的key。
3、如果参数有多个(大于1个)或者参数是单列集合或者是数组类型,那么需要使用@Param注解给参数取名字,参数占位符中的名称就是@Param注解的值。
mybatis的工作流程图(重点)



