dao层
package com.qcby.dao;
import com.qcby.entity.Person;
import com.qcby.entity.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface PersonDao {
List<Person> findPerson(Person person);
int update(Person person);
List<Person> selectPersonByChoose(Person person);
List<Person> selectPersonByNameAndSex(Person person);
int trimUpdate(Person person);
int deleteMoreByArray(@Param("ids") Integer[] ids);
int insertMoreByList(@Param("persons") List<Person> persons);
}
实体层
package com.qcby.entity;
public class Person {
private Integer id;
private String name;
private String sex;
private Integer age;
public Person() {
}
public Person(String name, String sex, Integer age) {
this.name = name;
this.sex = sex;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
sqlmapperconfig
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!--设置Mybatis输出日志-->
<!--logImpl: 表示对日志的控制-->
<!--STDOUT_LOGGING: 将日志输出到控制台上-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<environments default="mysql">
<environment id="mysql">
<!--配置事务的类型,使用本地事务策略-->
<transactionManager type="JDBC"></transactionManager>
<!--是否使用连接池 POOLED表示使用链接池,UNPOOLED表示不使用连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/PersonMapper.xml"></mapper>
</mappers>
</configuration>
mapper
<?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.qcby.dao.PersonDao">
<!--where if-->
<select id="findPerson" resultType="com.qcby.entity.Person" parameterType="com.qcby.entity.Person">
select * from person
<where>
<if test="name != null and name != ''">
name = #{name}
</if>
<if test="sex != null">
and sex = #{sex}
</if>
<if test="age != null and age != ''">
and age = #{age}
</if>
</where>
</select>
<update id="update" parameterType="com.qcby.entity.Person" >
update person
<set>
<if test="name != null and name != ''">
name = #{name}
</if>
<if test="sex != null">
and sex = #{sex}
</if>
<if test="age != null and age != ''">
and age = #{age}
</if>
</set>
where id = #{id}
</update>
<select id="selectPersonByChoose" resultType="com.qcby.entity.Person"
parameterType="com.qcby.entity.Person">
select * from person
<where>
<choose>
<when test="name != null and name != ''">
name = #{name}
</when>
<when test="sex != null">
and sex = #{sex}
</when>
<otherwise>
and id=#{id}
</otherwise>
</choose>
</where>
</select>
<select id="selectPersonByNameAndSex" parameterType="com.qcby.entity.Person"
resultType="com.qcby.entity.Person">
select * from person
<trim prefix="where" prefixOverrides="and | or">
<if test="name != null and name != ''">
name = #{name}
</if>
<if test="sex != null">
and sex = #{sex}
</if>
<if test="age != null and age != ''">
and age = #{age}
</if>
</trim>
</select>
<update id="trimUpdate" parameterType="com.qcby.entity.Person">
update person
<trim prefix="set" suffixOverrides=",">
<if test="name != null and name != ''">
name = #{name},
</if>
<if test="sex != null">
sex = #{sex},
</if>
<if test="age != null and age!=''">
age = #{age},
</if>
</trim>
where id = #{id}
</update>
<!--delete from person where id in (1,2,3,4,5); -->
<delete id="deleteMoreByArray">
delete from person where id in
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</delete>
<!-- collection:当前要循环的数组或者集合 -->
<!-- item: 我们指定要循环的数组的每一个元素 -->
<!-- separator:每一个元素应该用什么来做分割 -->
<!-- open:当前循环是以什么开始 -->
<!-- close:当前循环是以什么结束 -->
<!--insert into 表名 (字段) values (值),(值)-->
<insert id="insertMoreByList" >
insert into user(name,sex,age) values
<foreach collection="persons" item="person" separator=",">
(#{person.name},#{person.sex},#{person.age})
</foreach>
</insert>
</mapper>
test
import com.qcby.dao.PersonDao;
import com.qcby.dao.UserDao;
import com.qcby.entity.Person;
import com.qcby.entity.User;
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 org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.Arrays;
import java.util.List;
public class PersonTest {
private InputStream in = null;
private SqlSession session = null;
private PersonDao mapper = null;
@Before //前置通知, 在方法执行之前执行
public void init() throws IOException {
//加载主配置文件,目的是为了构建SqlSessionFactory对象
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//创建SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//通过SqlSessionFactory工厂对象创建SqlSesssion对象
session = factory.openSession();
//通过Session创建UserDao接口代理对象
mapper = session.getMapper(PersonDao.class);
}
@After //@After: 后置通知, 在方法执行之后执行 。
public void destory() throws IOException {
//释放资源
session.close();
in.close();
}
@Test
public void findPerson(){
Person person = new Person();
//user.setUsername("熊大");
person.setAge(22);
person.setSex("男");
List<Person> persons = mapper.findPerson(person);
for (Person person1: persons) {
System.out.println(person1.toString());
}
}
@Test
public void insert(){
Person person = new Person();
person.setName("sssssss");
person.setId(1);
mapper.update(person);
session.commit();
}
@Test
public void selectPersonByChoose(){
Person person1 = new Person();
person1.setId(1);
//user1.setUsername("admin");
List<Person> persons = mapper.selectPersonByChoose(person1);
for (Person person : persons) {
System.out.println(person.toString());
}
}
@Test
public void selectUserByUsernameAndSex(){
Person person = new Person();
person.setName("熊大");
// user.setAddress("上海");
person.setAge(123);
List<Person> persons = mapper.selectPersonByNameAndSex(person);
for (Person person1: persons) {
System.out.println(person1.toString());
}
}
@Test
public void trimUpdate(){
Person person = new Person();
person.setName("sssssss");
person.setSex("男");
mapper.trimUpdate(person);
session.commit();
}
@Test
public void deleteMoreByArray(){
Integer[] integer = new Integer[]{8,9,10,11};
mapper.deleteMoreByArray(integer);
session.commit();
}
@Test
public void insertMoreByList(){
Person person1 = new Person("小赵","男",55);
Person person2 = new Person("小张","男",45);
Person person3 = new Person("小李","男",30);
List<Person> Persons = Arrays.asList(person1,person2,person3);
mapper.insertMoreByList(Persons);
session.commit();
}
}