Mybatis入门
Mybatis 第一个例子
DROP TABLE IF EXISTS `category`;
CREATE TABLE `category` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL DEFAULT '',
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Mybatis CRUD
package com.how2java;
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 com.how2java.pojo.Category;
public class TestMybatis {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session=sqlSessionFactory.openSession();
Category c1 = new Category();
c1.setName("category1");
session.insert("addCategory", c1); // 新增
Category c2 = new Category();
c2.setName("category2");
session.insert("addCategory", c2); // 新增
Category c3 = new Category();
c3.setName("category3");
session.insert("addCategory", c3); // 新增
Category c11 = new Category();
c11.setId(1);
session.delete("deleteCategory", c11); // 删除
Category c21 = new Category();
c21.setId(2);
c21.setName("category21");
session.update("updateCategory", c21); // 更新
Category c31 = new Category();
c31.setId(3);
Category selectOne = session.selectOne("getCategory", c31); // 查询一个
System.out.println(selectOne.getId() + " " + selectOne.getName());
System.out.println("--------------------------");
listAll(session); // 查询所有
session.commit();
session.close();
}
public static void listAll(SqlSession session){
List<Category> cs=session.selectList("listCategory");
for (Category c : cs) {
System.out.println(c.getId() + " " + c.getName());
}
}
}
模糊查询
<select id="listCategoryByName" parameterType="string" resultType="Category">
select * from category where name like concat('%',#{0},'%')
</select>
List<Category> categories = session.selectList("listCategoryByName", "category");
多条件查询
<select id="listCategoryByIdAndName" parameterType="map" resultType="Category">
select * from category where id> #{id} and name like concat('%',#{name},'%')
</select>
Map<String, Object> map = new HashMap<>();
map.put("id", 2);
map.put("name", "category");
List<Category> categories = session.selectList("listCategoryByIdAndName", map);
一对多
一个商品种类对应多个商品。
一对多反过来
一个商品种类对应多个商品,多个商品可能对应一个商品种类,但一个商品对应一个种类(下面所述即此种情况)!
多对多
一个商品可对应多个订单,一个订单也可对应多个商品!
工程源码
坑点:把订单表命名成了关键字 order !
动态SQL
if
where
choose
foreach
bind
注解
略
参考资料
[1] HOW2J.CN