MyBatis-mapper.xml configuration

 1. Configure to obtain the ID of the added object

<!--    配置我们的添加方法,获取到新增加了一个monster对象的id
        useGeneratedKeys="true" 意思是需要获取新加对象的主键值
        keyProperty="monster_id" 表示将获取到的id值赋值给Monster对象的monster_id属性
-->
    <insert id="addMonster" parameterType="Monster"
    useGeneratedKeys="true" keyProperty="monster_id">
        INSERT INTO mybatis_monster_ (monster_id,age,birthday,email,gender,name,salary)
        VALUES (#{monster_id},#{age},#{birthday},#{email},#{gender},#{name},#{salary})
    </insert>
  @Test
    public void testAdd() {
        Monster monster = new Monster();
        for(int i=10;i<20;i++) {
            monster.setAge(100+i);
            monster.setBirthday(new Date());
            monster.setEmail("[email protected]");
            monster.setGender(1);
            monster.setSalary(8928.00);
            monster.setName("银角"+i);

            monsterMapper.addMonster(monster);
            System.out.println("获取添加的对象id" + monster.getMonster_id());
        }

    }

2. Re-explanation of parameterType (input parameter type)

(1) Pass in a simple type, such as checking Person by id (single condition query)

(2) Input POJQ type, multiple filtering conditions are required when querying (encapsulate multiple conditions into pojo, and pass in pojo as a parameter)

For example, please query the monsters with monster_id =1 or name='White Bone Demon'.

Note: When there are multiple conditions, the parameter passed in is a Java object of Pojo type, such as the Monster object here,

2.1 How to fuzzy query

        When we pass in a String, we can use ${} to receive parameters

First, in MonsterMapper, write this method to query monsters whose names contain "vixen"

public Monster findByName(String name);

Then, write this statement in the mapping file, pay attention to ${name}

<select id="findByName" resultType="com.bin.mybatis.entity.Monster" parameterType="String">
       SELECT * FROM mybatis_monster_
       WHERE name like '%${name}%'
   </select>

3. The implementation parameter is HashMap

        We can use HashMap to implement multi-condition queries


//    查询id>10而且salary大于40的所有妖怪
    public List<Monster> findMonsterByIdAndSalary(Map<String,Object> map);
    <select id="findMonsterByIdAndSalary" resultType="com.bin.mybatis.entity.Monster" parameterType="Map">
        SELECT * FROM mybatis_monster_
        WHERE monster_id>#{monster_id} AND salary>#{salary}
    </select>
  @Test
    public void findMonsterByIdAndSalary(){
        Map<String, Object> map = new HashMap<String,Object>();
        map.put("monster_id", 6);
        map.put("salary", 1234);
        List<Monster> monsterList = monsterMapper.findMonsterByIdAndSalary(map);
        for (Monster monster : monsterList) {
            System.out.println(monster);
        }
    }

4. The return parameter is map

 //    查询id>10而且salary大于40的所有妖怪
    //  第二种写法:参数和返回类型都是Map
    public Map<String,Object> findMonsterByIdAndSalary2(Map<String,Object> map);
  <select id="findMonsterByIdAndSalary2" resultType="Map" parameterType="Map">
        SELECT * FROM mybatis_monster_
        WHERE monster_id>#{monster_id} AND salary>#{salary}
    </select>

    @Test
    public void findMonsterByIdAndSalary(){
        Map<String, Object> map = new HashMap<String,Object>();
        map.put("monster_id", 6);
        map.put("salary", 1234);
        List<Monster> monsterList = monsterMapper.findMonsterByIdAndSalary(map);
        for (Monster monster : monsterList) {
            System.out.println(monster);
        }
    }

おすすめ

転載: blog.csdn.net/qq_36684207/article/details/135295874