您的位置:首页 > 其它

学习笔记-Mybatis(二)--XML方式的CRUD

2018-03-01 16:21 441 查看
基本的增删改查:

实体类(映射数据库表) - >的MyBatis-config.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.bean">
<insert id="addCategory" parameterType="Category">
insert into category_(name) values (#{name})
</insert>

<delete id="deleteCategory" parameterType="Category">
delete from category_ where id= #{id}
</delete>

<select id="getCategory" parameterType="_int" resultType="Category">
select * from category_ where id=#{id}
</select>

<update id="updateCategory" parameterType="Category">
update category_ set name=#{name} where id=#{id}
</update>

<select id="listCategory" resultType="Category"><!-- 因为myBatis-config.xml直接写Category -->
select * from category_
</select>
</mapper>


parameterType的用法:

1.基本数据类型,如输入参数只有一个,其数据类型可以是基本的数据类型,也可以是自己定的类类型。包括int,String,Integer,Date,如下:

(1)根据id进行相应的删除:
<delete id="deleteById" parameterType="Integer">


(2)添加员工:
<insert id="addEmp" parameterType="com.pojo.Employee">


2.复杂数据类型:包含java实体类,map。

另外MyBatis还提供了一个使用注解来参与多个参数的方式。这种方式需要在接口的参数上添加@Param注解> / * 此处要注意的是,由于该方法需要传入多个参数,在进行MyBatis配置时, 没有办法同时配置多个参数,另外MyBatis还提供了一个使用注解来参数 多个参数的方式。这种方式需要在接口的参数上添加@Param注解.. 注意,以下两种写法是完全相同的。但使用的时候要使用第一种类型 / Userlogin(@Param(value =“name”)Stringname,@Param(value =“password”)String password); //用户登录(String name,String password); 配置如下:

<select id =“login”resultType =“com.pojo.User”>
select * from us where name =#{name} and password =# {密码}
</ select> ```
---------- >

> ```<选择ID = “getWinLogByEventId”参数类型= “java.lang.Long中” >结果映射= “BaseResultMap”>   >     选择<包括REFID = “基础_列_列表”/>从取胜_登录其中EVENTID =# { _ parameter,jdbcType = BIGINT}    </ select >    ``` 3.获取参数中的值:   1.基本数据类型:#{参数}获取参数中的值   2.复杂数据类型:#{属性名}, map中则是#{key} ---------- **测试类:**

````
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);
// 通过配置文件"mybatis-config.xml"得到SQLSessionFactory(创建SqlSession对象的工厂)
SqlSession session = sqlSessionFactory.openSession();
// 通过SQLSessionFactory得到Session
Category c = new Category();
// 增加
c.setName("addCategory");
session.insert("addCategory", c);
// 删除
c.setId(6);
session.delete("deleteCategory", c);
// 查询
c = session.selectOne("getCategory", 3);
System.out.println(c.getName());
// 更改
c = session.selectOne("getCategory", 4);
c.setName("修改了姓名");
session.update("updateCategory", c);

// 遍历
listAll(session);

session.commit();
session.close();

}

private static void listAll(SqlSession session) {
// TODO Auto-generated method stub
List<Category> cs = session.selectList("listCategory");
// 通过session的selectList方法,调用sql语句listCategory。
for (Category c : cs) {
System.out.println(c.getName());
}

}

}


模糊查询:

实体类配置文件:

<select id="listCategoryByName" parameterType="String"
resultType="Category">
select * from category_ where name like concat('%',#{0},'%')
<! - 如果是oracle,写法是 - >
<! -  select * from category_ where'name'like '%'||#{0} ||'%' - >
</ select> ```
测试代码:


List cs = session.selectList(“listCategoryByName”,“cat”);

for(Category c1:cs){

System.out.println(c1.getName());

} “`

多条件查询:结合前面的模糊查询,多一个id>多少的条件1。Category.xml准备sql语句

““

选择id =“listCategoryByIdAndName”parameterType =“map”

resultType =“Category”>

select * from category_其中id>#{id}和名字像concat(’%’,#{name },’%’)

因为是多个参数,而selectList方法又只接受一个参数对象,所以需要把多个参数放在Map里面,然后把这个Map对象作为参数传递进去

`

Map <String,Object> params = new HashMap < >();

params.put(“id”,0);

params.put(“name”,“cat”);       List <Category> cs = session.selectList(“listCategoryByIdAndName”,params);      for(Category c1:cs){            System.out.println(c1.getName());       }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: