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

Mybatis详细教程
基本的增删改查:
实体类(映射数据库表)–>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()); }

猜你喜欢

转载自blog.csdn.net/qq_36653267/article/details/79387103