跟着我 简单学下Mybatis的CRUD操作

Mybatis 学习内容
搭建环境
加入依赖架包

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.5</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.12</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
    </dependency>
</dependencies>

创建实体类

private Integer deptId;
private String deptName;

创建VO类

private User user;

public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}

创建接口
package com.yang.dao;

import com.yang.domain.QueryVo;
import com.yang.domain.User;

import java.util.List;

/**
*

  • 用户的持久层接口
    */
    public interface IUserDao {

    /**

    • 查询所有用户
    • @return
      */
      List findAll();

    /**

    • 保存用户
    • @param user
      */
      void saveUser(User user);

    /**

    • 更新用户
    • @param user
      */
      void updateUser(User user);

    /**

    • 根据Id删除用户
    • @param userId
      */
      void deleteUser(Integer userId);

    /**

    • 根据id查询用户信息
    • @param userId
    • @return
      */
      User findById(Integer userId);

    /**

    • 根据名称模糊查询用户信息
    • @param username
    • @return
      */
      List findByName(String username);

    /**

    • 查询总用户数
    • @return
      */
      int findTotal();

    /**

    • 根据queryVo中的条件查询用户
    • @param vo
    • @return
      */
      List findUserByVo(QueryVo vo);
      }

配置SqlMapConfig.xml文件相关信息

<?xml version="1.0" encoding="UTF-8"?>
</mappers>
配置log4j.properties文件 # Set root category priority to INFO and its only appender to CONSOLE. #log4j.rootCategory=INFO, CONSOLE debug info warn error fatal log4j.rootCategory=debug, CONSOLE, LOGFILE

Set the enterprise logger category to FATAL and its only appender to CONSOLE.

log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

CONSOLE is set to be a ConsoleAppender using a PatternLayout.

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

LOGFILE is set to be a File appender using a PatternLayout.

log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
配置IUserDao.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置 查询结果的列名和实体类的属性名的对应关系 -->
<resultMap id="userMap" type="uSeR">
    <!-- 主键字段的对应 -->
    <id property="deptId" column="dept_id"></id>
    <!--非主键字段的对应-->
    <result property="deptName" column="dept_name"></result>
</resultMap>


<!-- 查询所有 -->
<select id="findAll" resultMap="userMap">
    <!--select id as userId,username as userName,address as userAddress,sex as userSex,birthday as userBirthday from user;-->
    select * from tbl_dept;
</select>

<!-- 保存用户 -->
<insert id="saveUser" parameterType="user">
    <!-- 配置插入操作后,获取插入数据的id
    keyProperty  实体类的id
    -->
    <selectKey keyProperty="deptId" keyColumn="dept_id" resultType="int" order="AFTER">
        select last_insert_id();
    </selectKey>
    insert into tbl_dept(dept_name)values(#{deptName});
</insert>

<!-- 更新用户 -->
<update id="updateUser" parameterType="USER">
    update tbl_dept set dept_name=#{deptName} where dept_id=#{deptId}
</update>

<!-- 删除用户-->
<delete id="deleteUser" parameterType="java.lang.Integer">
    delete from tbl_dept where dept_id = #{deptId}
</delete>

<!-- 根据id查询用户 -->
<select id="findById" parameterType="INT" resultMap="userMap">
    select * from tbl_dept where dept_id = #{deptId}
</select>

<!-- 根据名称模糊查询 -->
<select id="findByName" parameterType="string" resultMap="userMap">
      select * from tbl_dept where dept_name like #{deptName}
    <!-- select * from user where username like '%${value}%'-->
<!-- 获取用户的总记录条数 -->
<select id="findTotal" resultType="int">
    select count(dept_id) from tbl_dept;
</select>

<!-- 根据queryVo的条件查询用户 -->
<select id="findUserByVo" parameterType="com.yang.domain.QueryVo" resultMap="userMap">
    select * from tbl_dept where dept_name like #{user.deptName}
</select>
测试类

package com.yang.test.test;

import com.yang.dao.IUserDao;
import com.yang.domain.QueryVo;
import com.yang.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.InputStream;
import java.util.List;

public class MybatisTest {

private InputStream in;
private SqlSession sqlSession;
private IUserDao userDao;

@Before//用于在测试方法执行之前执行
public void init()throws Exception{
    //1.读取配置文件,生成字节输入流
    in = Resources.getResourceAsStream("SqlMapConfig.xml");
    //2.获取SqlSessionFactory
    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
    //3.获取SqlSession对象
    sqlSession = factory.openSession();
    //4.获取dao的代理对象
    userDao = sqlSession.getMapper(IUserDao.class);
}

@After//用于在测试方法执行之后执行
public void destroy()throws Exception{
    //提交事务
    sqlSession.commit();
    //6.释放资源
    sqlSession.close();
    in.close();
}

/**
 * 测试查询所有
 */
@Test
public void testFindAll(){
    //5.执行查询所有方法
    List<User> users = userDao.findAll();
    for(User user : users){
        System.out.println(user);
    }

}

/**
 * 测试保存操作
 */
@Test
public void testSave(){
    User user = new User();
    user.setDeptName("modify User property");
    System.out.println("保存操作之前:"+user);
    //5.执行保存方法
    userDao.saveUser(user);

    System.out.println("保存操作之后:"+user);
}

/**
 * 测试更新操作
 */
@Test
public void testUpdate(){
    User user = new User();
    user.setDeptId(2);
    user.setDeptName("update user");

    //5.执行保存方法
    userDao.updateUser(user);
}

//
/**
* 测试删除操作
*/
@Test
public void testDelete(){
//5.执行删除方法
userDao.deleteUser(5);
}

/**
 *
 */
@Test
public void testFindOne(){
    //5.执行查询一个方法
    User  user = userDao.findById(2);
    System.out.println(user);
}

/**
 * 测试模糊查询操作
 */
@Test
public void testFindByName(){
    //5.执行查询一个方法
    List<User> users = userDao.findByName("%m%");

// List users = userDao.findByName(“王”);
for(User user : users){
System.out.println(user);
}
}

/**
 * 测试查询总记录条数
 */
@Test
public void testFindTotal(){
    //5.执行查询一个方法
    int count = userDao.findTotal();
    System.out.println(count);
}


/**
 * 测试使用QueryVo作为查询条件
 */
@Test
public void testFindByVo(){
    QueryVo vo = new QueryVo();
    User user = new User();
    user.setDeptName("%m%");
    vo.setUser(user);
    //5.执行查询一个方法
    List<User> users = userDao.findUserByVo(vo);
    for(User u : users){
        System.out.println(u);
    }
}

}

喜欢的点个赞有什么问题评论下,这是对我莫大的支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值