publicclassMybatisTest{private InputStream is;private SqlSession sqlSession;private UserDao userDao;@Before//用于在测试方法前执行publicvoidinit()throws IOException {//1.读取配置文件,生成字节输入流
is = Resources.getResourceAsStream("SqlMapConfig.xml");//2.获取SqlSessionFactory
SqlSessionFactory factory =newSqlSessionFactoryBuilder().build(is);//3.获取SqlSession对象
sqlSession = factory.openSession();//4.获取dao的代理对象
userDao = sqlSession.getMapper(UserDao.class);}@After//用于在测试方法后执行publicvoiddestory()throws IOException {//6.释放资源
sqlSession.close();
is.close();}/**
* 测试查询操作
*/@TestpublicvoidtestFindAll()throws IOException {//5.执行查询所有方法
List<User> users = userDao.findAll();for(User user : users){
System.out.println(user);}}/*
*测试保存操作
*/@TestpublicvoidtestSave(){//1.设置所需要保存的用户信息
User user =newUser();
user.setUserName("modify User property");
user.setUserBirthday(newDate());
user.setUserSex("男");
user.setUserAddress("上海");
System.out.println("保存操作前:"+user);//2.调用dao方法进行保存
userDao.saveUser(user);//3.提交事务
sqlSession.commit();
System.out.println("保存操作后:"+user);}/**
* 测试更新用户操作
*/@TestpublicvoidtestUpdate(){//1.设置所需要保存的用户信息
User user =newUser();
user.setUserId(50);
user.setUserName("Hello");
user.setUserBirthday(newDate());
user.setUserSex("女");
user.setUserAddress("北京");//2.调用dao方法进行更新
userDao.updateUser(user);}/**
* 测试删除用户操作
*/@TestpublicvoidtestDelete(){
userDao.deleteUser(49);}/**
* 测试根据用户id查询信息
*/@TestpublicvoidtestFindByid(){
User user = userDao.findById(46);
System.out.println(user);}/**
* 测试模糊查询操作
*/@TestpublicvoidtestFinfByUsername(){
List<User> users = userDao.findByUsername("%王%");// List<User> users = userDao.findByUsername("王");for(User user : users){
System.out.println(user);}}/**
* 测试所有用户数
*/@TestpublicvoidtestFindTotal(){int count = userDao.findTotal();
System.out.println("count总数为"+count);}/**
* 测试使用QueryVo作为查询条件
*/@TestpublicvoidtestFindByVo(){
QueryVo vo =newQueryVo();
User user =newUser();
user.setUserName("%王%");
vo.setUser(user);
List<User> userByVo = userDao.findUserByVo(vo);for(User u : userByVo){
System.out.println("模糊查询‘王’相关的user信息为:"+u);}}}
UserDao.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.hugong.dao.UserDao"><!-- 配置 查询结果的列名和实体类的属性名的对应关系(此种方式开发效率较高) --><resultMap id="userMap" type="uSeR"><!-- 主键字段的对应 --><id property="userId" column="id"></id><!-- 非主键字段的对应 --><result property="userName" column="username"></result><result property="userBirthday" column="birthday"></result><result property="userSex" column="sex"></result><result property="userAddress" column="address"></result></resultMap><!-- 查询所有用户 --><select id="findAll" resultMap="userMap">--(此种方式执行效率较高)-- select id as userId,username as userName,birthday as userBirthday,sex as userSex ,address as userAddress from user;
select * from user;</select><!-- 保存用户 --><insert id="saveUser" parameterType="user"><!-- 配置插入操作后,获取插入数据的id --><selectKey keyProperty="userId" keyColumn="id" resultType="int" order="AFTER">
select last_insert_id();</selectKey>
insert into user (username,birthday,sex,address)values(#{userName},#{userBirthday},#{userSex},#{userAddress});</insert><!-- 更新用户 --><select id="updateUser" parameterType="UsER">
update user set username=#{userName},birthday=#{userBirthday},sex=#{userSex},address=#{userAddress} where id = #{userId}</select><!-- 删除用户 --><select id="deleteUser" parameterType="Integer">
delete from user where id = #{uid};</select><!-- 根据id查询用户信息 --><select id="findById" parameterType="int" resultMap="userMap">
select * from user where id = #{id};</select><!-- 根据username模糊查询用户信息 --><select id="findByUsername" parameterType="String" resultMap="userMap">
select * from user where username like #{username};<!-- select * from user where username like '%{value}%';(不常用)此种使用的Statement的字符串拼接SQL
上面的方法是使用PrepatedStatement的参数占位符
--></select><!-- 根据用户id查询总用户数 --><select id="findTotal" resultType="int">
select count(id) from user;</select><!-- 根据username模糊查询用户信息 --><select id="findUserByVo" parameterType="com.hugong.domain.QueryVo" resultMap="userMap">
select * from user where username like #{user.userName};</select></mapper>