这里使用的是注解 就不要带有sql语句的xml文件
1、定义一个接口 在接口上的方法直接使用注解 写sql语句
package cn.easytop.lesson02.annotion;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectKey;
import cn.easytop.lesson02.Food;
public interface FoodMapper {
/*
* 根据菜名查询
*
*
* 指定参数名
* @Select("select * from food where foodName=#{foodName}")
* public List<Map> queryFood1(@Param("foodName") String foodName); //使用了@Param注解了 就可以在#{使用param(里的参数)}
*/
//查询返回的是一个list集合
@Select("select * from food where foodName=#{0}")
public List<Map> queryFood1(String foodName); //没有使用@Param注解就用下标填充 #{0}#{1}
//使用#{键}方式 实际上是使用占位符 ?来替代
//使用${键}方式 实际上是使用值直接替换对应的键 注意:如果是字符串 手工添加''
//查询返回的是一个对象
@Select("select * from food where foodName like '%${foodName}%'")
public List<Food> queryFood(@Param("foodName") String foodName);
/*
* 根据菜名id删除
*
*/
@Delete("delete from food where foodid=#{0}")
public void deleteFood1(String foodId);
/*
* selectkey
* before=true:会首先执行主键(设置keyProperty需要执行statement)在insert执行之前执行
* keyProperty:主键列
* resultType:statement执行返回的类型
* statement:oracle没有自动增长需要新建一个序列 执行序列
* 新增
* 对象新增
*/
@SelectKey(before=true,keyProperty="foodId",resultType=int.class,statement="select food_sec.nextval from dual")
@Insert("insert into food values(#{foodId},#{foodName},#{price})")
public void saveFood(Food food);
}
2、mybatis-config.xml内容: mybatis的核心配置文件
这里有个注意点 <mapper class="cn.easytop.lesson02.annotion.FoodMapper"/>
使用 . 隔开
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- mybatis的核心配置文件
1.数据库的连接的信息(连接池)
-->
<properties resource="oracle.properties"></properties>
<environments default="development">
<environment id="development">
<!-- 事务管理器 默认使用jdbc事务 -->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driverClass}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username1}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 不需要映射的xml文件 需要关联接口
注意这里不是资源文件 是一个接口 写法需要不再使用 / 需要用.
cn.easytop.lesson02.annotion.FoodMapper
-->
<mapper class="cn.easytop.lesson02.annotion.FoodMapper"/>
</mappers>
</configuration>
3、测试类
package cn.easytop.lesson02.annotion;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import cn.easytop.lesson02.Food;
public class Test {
public static SqlSession getSession() throws IOException{
String resource = "cn/easytop/lesson02/annotion/mybatis.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//工厂类
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession openSession = sqlSessionFactory.openSession();
//session操作的是 指向sql语句的一个唯一表示符
return openSession;
}
//查询
@org.junit.Test
public void testAnnoInterface() throws IOException{
SqlSession session=getSession();
//获取FoodMapper的实现类
FoodMapper fm=session.getMapper(FoodMapper.class);
List queryFood = fm.queryFood1("辣椒炒肉");
session.commit();
System.out.println(queryFood);
}
//删除
@org.junit.Test
public void deleteAnnoInterface() throws IOException{
SqlSession session=getSession();
//获取FoodMapper的实现类
FoodMapper fm=session.getMapper(FoodMapper.class);
fm.deleteFood1("3");
session.commit();
}
//模糊查询
@org.junit.Test
public void deleteAnnoInterface1() throws IOException{
SqlSession session=getSession();
//获取FoodMapper的实现类
FoodMapper fm=session.getMapper(FoodMapper.class);
List<Food> queryFood = fm.queryFood("辣椒炒肉");
System.out.println(queryFood);
}
//selectKey
@org.junit.Test
public void saveAnnoInterface() throws IOException{
SqlSession session=getSession();
//获取FoodMapper的实现类
FoodMapper fm=session.getMapper(FoodMapper.class);
Food food=new Food();
food.setFoodName("油豆腐炒白豆腐");
food.setPrice("12");
fm.saveFood(food);
session.commit();
System.out.println(food.getFoodId());
}
}