目錄
列:單表的各種查詢方式
mybatis的全局配置文件--sqlMapConfig.xml
<?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>
<properties resource="db.properties"></properties><!-- 讀取屬性文件 -->
<typeAliases>
<!-- 單個別名 -->
<!-- <typeAlias type="com.iotek.po.Goods" alias="goods"/> -->
<!--批量別名:掃描整個包下的類,類的別名就是類名(首字母大寫或者小寫都可以) -->
<package name="com.demo.po" />
<package name="com.demo2.po" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置數據源 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- 加載sql語句映射文件 -->
<mappers>
<mapper resource="com/demo/po/Goods.xml" />
</mappers>
</configuration>
創建po對象
dao包實現--Mapper動態代理方式
public interface GoodMapper {
public Goods queryGoodsById(int id);//1通過id查詢
public List<Goods> queryGoodsByGoodsCondition(Goods goods); //2查詢價格範圍
public Goods queryGoodsByMap(Map<String,Object> map);//3map查詢多個字段
public Goods queryGoodsByIdAndGoodName(Integer id,String goodName);//4查詢多個字段
public Goods queryGoodsByIdAndGoodName2(@Param("id")Integer id,@Param("goodName")String goodName);//5查詢多個字段
public Goods queryGoodsByIdAndGoods(int id, @Param("mygood")Goods goods);//6 通過對象查詢
public Goods queryGoodsByIdAndList(Integer id,@Param("list")List<Goods> goods);//7通過對象列表
}
sql映射文件--Goods.xml
<?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.demo.dao.GoodMapper">
<!-- 1查詢 通過id查詢 -->
<select id="queryGoodsById" parameterType="int" resultType="goods">
select * from goods where id=#{id}
</select>
<!-- 2查詢 查詢商品價格區間 -->
<select id="queryGoodsByGoodsCondition" parameterType="Goods" resultType="Goods">
select * from goods where price between #{goodsCondition.minPrice} and #{goodsCondition.maxPrice}
</select>
<!--3查詢多個字段 #{}取map集合的key名 -->
<select id="queryGoodsByMap" parameterType="hashmap" resultType="Goods" >
select * from goods where id=#{id} and goodName=#{aaa}
</select>
<!-- 4查詢多個字段 #{}取map集合的key,只不過key默認是param1...paramN -->
<select id="queryGoodsByIdAndGoodName" parameterType="hashmap" resultType="Goods">
select * from goods where id=#{param1} and goodName=#{param2}
</select>
<!-- 5查詢多個字段 -->
<select id="queryGoodsByIdAndGoodName2" parameterType="hashmap" resultType="Goods">
select * from goods where id=#{id} and goodName=#{goodName}
</select>
<!-- 6查詢多個字段 -->
<select id="queryGoodsByIdAndGoods" parameterType="hashmap" resultType="Goods">
select * from goods where id=#{param1} and goodName=#{mygood.goodName}
</select>
<!-- 7通過對象list -->
<select id="queryGoodsByIdAndList" parameterType="hashmap" resultType="Goods">
select * from goods where id=#{param1} and goodName=#{list[0].goodName}
</select>
</mapper>
工具類Utils.java
com.demo.tools
public class Utils {
private static SqlSessionFactory sqlSessionFactory;
public static SqlSessionFactory getSqlSessionFactory() throws Exception {
// 1獲取全局配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
// 2創建SqlSessionFactory工廠類
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}
}
測試--MyTest.java
/**
* 1查詢 通過id查詢
* @throws Exception
*/
@Test
public void queryGoodsById() throws Exception{
SqlSession sqlSession=Utils.getSqlSessionFactory().openSession();
GoodMapper gm= sqlSession.getMapper(GoodMapper.class);//Mapper動態代理
System.out.println("gm=="+gm);
Goods goods=gm.queryGoodsById(4);
System.out.println(goods);
}
/**
* 2查詢 查詢商品價格區間
*/
@Test
public void queryGoodsByGoodsCondition() throws Exception{
SqlSession sqlSession=Utils.getSqlSessionFactory().openSession();
GoodMapper goodMapper= sqlSession.getMapper(GoodMapper.class);//Mapper動態代理
System.out.println("goodMapper=="+goodMapper);
Goods goods=new Goods();
GoodsCondition goodsCondition=new GoodsCondition(2000.0, 1000.0);
goods.setGoodsCondition(goodsCondition);
List<Goods> a=goodMapper.queryGoodsByGoodsCondition(goods);
for (Goods goods2 : a) {
System.out.println(goods2);
}
}
/**
* 3查詢多個字段(通過id和名稱查詢)
*/
@Test
public void queryGoodsByMap() throws Exception{
SqlSession sqlSession=Utils.getSqlSessionFactory().openSession();
GoodMapper goodMapper= sqlSession.getMapper(GoodMapper.class);//Mapper動態代理(接口代理對象)
System.out.println("goodMapper=="+goodMapper);
Map<String, Object> map=new HashMap<String, Object>();
map.put("id", 5);
map.put("aaa", "bb");
Goods goods=goodMapper.queryGoodsByMap(map);
System.out.println(goods);
}
/**
* 4查詢多個字段(通過id和名稱查詢)
*/
@Test
public void queryGoodsByIdAndGoodName() throws Exception{
SqlSession sqlSession=Utils.getSqlSessionFactory().openSession();
GoodMapper goodMapper= sqlSession.getMapper(GoodMapper.class);//Mapper動態代理(接口代理對象)
System.out.println("goodMapper=="+goodMapper);
Goods goods=goodMapper.queryGoodsByIdAndGoodName(5, "bb");
System.out.println(goods);
}
/**
* 5查詢多個字段(通過id和名稱查詢)
*/
@Test
public void queryGoodsByIdAndGoodName2() throws Exception{
SqlSession sqlSession=Utils.getSqlSessionFactory().openSession();
GoodMapper goodMapper= sqlSession.getMapper(GoodMapper.class);//Mapper動態代理(接口代理對象)
System.out.println("goodMapper=="+goodMapper);
Goods goods=goodMapper.queryGoodsByIdAndGoodName(5, "bb");
System.out.println(goods);
}
/**
* 6查詢多個字段(通過id和名稱查詢)
*/
@Test
public void queryGoodsByIdAndGoods() throws Exception{
SqlSession sqlSession=Utils.getSqlSessionFactory().openSession();
GoodMapper goodMapper= sqlSession.getMapper(GoodMapper.class);//Mapper動態代理(接口代理對象)
System.out.println("goodMapper=="+goodMapper);
Goods goods=new Goods();
goods.setGoodName("bb");
Goods aa=goodMapper.queryGoodsByIdAndGoods(5, goods);
System.out.println(aa);
}
/**
* 7查詢多個字段(通過id和名稱查詢)
*/
@Test
public void queryGoodsByIdAndList() throws Exception{
SqlSession sqlSession=Utils.getSqlSessionFactory().openSession();
GoodMapper goodMapper= sqlSession.getMapper(GoodMapper.class);//Mapper動態代理(接口代理對象)
System.out.println("goodMapper=="+goodMapper);
Goods good=new Goods();
good.setGoodName("bb");
List<Goods>list=new ArrayList<Goods>();
list.add(good);
Goods aa=goodMapper.queryGoodsByIdAndList(5, list);
System.out.println(aa);
}