package test;
import dao.IUserDao;
import dao.QueryVo;
import domain.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.sql.SQLOutput;
import java.util.Date;
import java.util.List;
public class TestDemo {
private InputStream in;
private SqlSessionFactory factory;
private SqlSession sqlSession;
private IUserDao userDao;
//测试方法执行之前执行
@Before
public void init() throws Exception {
//1.读取配置文件
in = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.创建工厂
factory = new SqlSessionFactoryBuilder().build(in);
//3.创建sqlSession接口
sqlSession = factory.openSession(true);
//4.创建代理对象
userDao = sqlSession.getMapper(IUserDao.class);
}
//最后执行
@After
public void destory() throws Exception {
sqlSession.close();
in.close();
}
@Test
public void test() {
//id查询
User user = userDao.findById(41);
System.out.println(user);
}
//保存
@Test
public void test1() {
User user = new User();
user.setUsername("keke");
user.setBirthday(new Date());
user.setSex("男");
System.out.println("保存操作执行前" + user);
userDao.saveUser(user);
System.out.println("保存后" + user);
}
//修改
@Test
public void test2() throws Exception {
User user = userDao.findById(48);
user.setAddress("你猜");
int res = userDao.updateUser(user);
System.out.println(res);
}
//删除
@Test
public void del() {
int res = userDao.deleteUser(51);
System.out.println(res);
}
@Test
public void find() {
//模糊查询
List<User> users = userDao.findByName("%k%");
for (User user : users)
System.out.println(user);
}
//注意:%%:相当于prepareStatement,可以防止sql注入
//聚合函数
@Test
public void juhe() {
int res = userDao.findTotal();
System.out.println(res);
}
//包装类
@Test
public void findByVo() {
QueryVo vo = new QueryVo();
User user = new User();
user.setUsername("%王%");
vo.setUser(user);
List<User> users = userDao.findByVo(vo);
for (User u : users) {
System.out.println(u);
}
}
}
对应的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="dao.IUserDao">
<select id="findAll" resultType="domain.User">
select *from user;
</select>
<select id="findById" resultType="domain.User" parameterType="int">
select*from user where id=#{oo};
</select>
<insert id="saveUser" parameterType="domain.User">
<selectKey keyColumn="id" keyProperty="id" resultType="int">
select last_insert_id();
</selectKey>
insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address});
</insert>
<update id="updateUser" parameterType="domain.User" >
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address}
where id=#{id};
</update>
<delete id="deleteUser" parameterType="java.lang.Integer">
delete from user where id=#{id};
</delete>
<select id="findByName" resultType="domain.User" parameterType="String">
select *from user where username like #{username}
</select>
<select id="findTotal" resultType="int">
select count(*) from user;
</select>
<select id="findByVo" resultType="User" parameterType="dao.QueryVo">
select* from user where username like #{user.username};
</select>
</mapper>
SqlMapConfig.xml主配置文件:
<?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>
<!--配置mybatis环境-->
<typeAliases>
<package name="domain"></package>
</typeAliases>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</dataSource>
</environment>
</environments>
<!--告知MyBatis的映射路径-->
<mappers>
<mapper resource="IAccountDao.xml"/>
</mappers>
</configuration>