创建一个包com.hncpu.dao,在该包下创建一个接口PersonMapper.java,在接口中添加一个方法getPersonByNameAndAgeOrSex,该方法的参数为Person类型的对象psn,方法的返回值为Person对象链表;创建一个映射文件PersonMapper.xml,在该映射文件中配置相应的sql语句,如果对象psn中的姓名不为空,则根据姓名做模糊查询,而且,如果对象psn中的年龄age不为0,则查询年龄大于age的信息,或者如果psn中的性别不为空,则查询该性别的person信息。(40分)5、创建一个包com.hncpu.utils,在该包下创建一个类MbUtils.java,通过MbUtils类的静态方法getSession可获得SqlSession对象。(10分)6、在test目录下,新建一个测试类,在该测试类中添加一个测试方法testPerson,在该方法中添加一个Person类的对象person,并设置person对象的姓名为:张,年龄为:18,性别为:女,然后将person对象作为参数传递给PersonMapper接口中的方法getPersonByNameAndAgeOrSex,将方法的执行结果保存在Person类型的集合变量中,并循环输出集合变量的值。(10分
时间: 2024-03-12 12:42:55 浏览: 16
好的,我来给您写一下这些代码:
PersonMapper.java接口:
```java
package com.hncpu.dao;
import java.util.List;
import com.hncpu.pojo.Person;
public interface PersonMapper {
List<Person> getPersonByNameAndAgeOrSex(Person psn);
}
```
PersonMapper.xml映射文件:
```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.hncpu.dao.PersonMapper">
<select id="getPersonByNameAndAgeOrSex" resultType="com.hncpu.pojo.Person">
SELECT * FROM person
<where>
<if test="name != null and name != ''">
AND name like '%'||#{name}||'%'
</if>
<if test="age != null and age != 0">
AND age > #{age}
</if>
<if test="sex != null and sex != ''">
AND sex = #{sex}
</if>
</where>
</select>
</mapper>
```
MbUtils.java工具类:
```java
package com.hncpu.utils;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MbUtils {
private static SqlSessionFactory factory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
factory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSession() {
return factory.openSession(true);
}
}
```
测试类:
```java
package test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.hncpu.dao.PersonMapper;
import com.hncpu.pojo.Person;
import com.hncpu.utils.MbUtils;
public class Test {
public static void main(String[] args) {
Person person = new Person();
person.setName("张");
person.setAge(18);
person.setSex("女");
SqlSession session = MbUtils.getSession();
PersonMapper mapper = session.getMapper(PersonMapper.class);
List<Person> list = mapper.getPersonByNameAndAgeOrSex(person);
for (Person p : list) {
System.out.println(p);
}
session.close();
}
}
```
您可以根据需要修改其中的一些细节,比如数据库的表名、字段名等等。