Mybatids学习篇二

                           使用MyBatis对表执行CRUD操作


1、添加Mybatis的配置文件conf.xml


2、定义表所对应的实体类,


3、定义操作users表的sql映射文件userMapper.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
            例如namespace="com.users.mapping.userMapper"就是com.users.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
  -->
<mapper namespace="com.users.mapping.userMapper">
     <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
                          使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
          resultType="com.User"就表示将查询结果封装成一个User类的对象返回
          User类就是users表所对应的实体类
     -->
     <!-- 
              根据id查询得到一个user对象
      -->
     <select id="getUser" parameterType="int" 
         resultType="com.users.Users">
         select * from users where id=#{id}
     </select>
     
     <!-- 创建用户(Create) -->
     <insert id="addUser" parameterType="com.users.Users">
         insert into users(name,age) values(#{name},#{age})
     </insert>
     
     <!-- 删除用户(Remove) -->
     <delete id="deleteUser" parameterType="int">
        delete from users where id=#{id}
     </delete>
     
     <!-- 修改用户(Update) -->
     <update id="updateUser" parameterType="com.users.Users">
         update users set name=#{name},age=#{age} where id=#{id}
     </update>
     
     <!-- 查询全部用户-->
     <select id="getAllUsers" resultType="com.users.Users">
         select * from users
     </select>
     
</mapper>

4、定义sql映射的接口

  UserMapperI接口的代码如下:

package com.users.mapping;


import java.util.List;


import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;


import com.users.Users;


public interface UserMapperI {
/**
 * @author w_little
 * 定义sql映射的接口,使用注解指明方法要执行的SQL
 */
 
  //使用@Insert注解指明add方法要执行的SQL
    @Insert("insert into users(name, age) values(#{name}, #{age})")
    public int add(Users user);
    
    //使用@Delete注解指明deleteById方法要执行的SQL
    @Delete("delete from users where id=#{id}")
    public int deleteById(int id);
    
    //使用@Update注解指明update方法要执行的SQL
    @Update("update users set name=#{name},age=#{age} where id=#{id}")
    public int update(Users user);
    
    //使用@Select注解指明getById方法要执行的SQL
    @Select("select * from users where id=#{id}")
    public Users getById(int id);
    
    //使用@Select注解指明getAll方法要执行的SQL
    @Select("select * from users")
         public List<Users> getAll();
}

5、conf.xml文件中注册这个映射接口

<mappers>

      <mapper resource="com/users/mapping/userMapper.xml"/>

 <!-- 注册UserMapper映射接口-->
  <mapper class="com.users.mapping.UserMapperI"/>
</mappers>

6、用到的MyBatisUtil工具类代码如下

package com.util;



import java.io.InputStream;


import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;




public class MybatisUtil {
/**
     * 获取SqlSessionFactory
     * @return SqlSessionFactory
     */
   public static SqlSessionFactory getSqlSessionFactory() {
    //mybatis的配置文件
        String resource = "conf.xml";
        //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
             InputStream is = MybatisUtil.class.getClassLoader().getResourceAsStream(resource);
             //构建sqlSession的工厂
             SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
            
        return factory;
    }
    
    /**
           * 获取SqlSession
           * @return SqlSession
      */
      public static SqlSession getSqlSession() {
       //创建能执行映射文件中sql的sqlSession
       return getSqlSessionFactory().openSession();
    }
     
    /**
     * 获取SqlSession
     * @param isAutoCommit 
     *    true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务
   * false 表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()提交事务
     * @return SqlSession
     */
    public static SqlSession getSqlSession(boolean isAutoCommit) {
       return getSqlSessionFactory().openSession(isAutoCommit);
    }
}

7、单元测试类的代码如下:

package com.user.test;


import java.util.List;


import org.apache.ibatis.session.SqlSession;
import org.junit.Test;


import com.users.Users;
import com.users.mapping.UserMapperI;
import com.util.MybatisUtil;


public class Test1 {


@Test
public void testAdd() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
/**
* 得到UserMapperI接口的实现类对象, UserMapperI接口的实现类对象由
* sqlSession.getMapper(UserMapperI.class)动态构建出来
*/
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
Users user = new Users();
user.setName("用户zxw");
user.setAge(20);
int add = mapper.add(user);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(add);

}


@Test
public void testUpdate() {
SqlSession sqlSession = MybatisUtil.getSqlSession(true);
/**
* 得到UserMapperI接口的实现类对象
* mUserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
*/
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
Users user = new Users();
user.setId(1);
user.setName("用户lxw");
user.setAge(56);
// 执行修改操作
int retResult = mapper.update(user);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(retResult);




}


@Test
public void testDelete() {
SqlSession sqlSession = MybatisUtil.getSqlSession(true);
/**
* 得到UserMapperI接口的实现类对象
* mUserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
*/
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
// 执行删除操作
int retResult = mapper.deleteById(7);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(retResult);

}


@Test
public void testGetUser() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
// 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
// 执行查询操作,将查询结果自动封装成User返回
Users user = mapper.getById(8);
// 使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(user);

}


@Test
public void testGetAll() {
SqlSession sqlSession = MybatisUtil.getSqlSession();
// 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
// 执行查询操作,将查询结果自动封装成List<User>返回
List<Users> lstUsers = mapper.getAll();
// 使用SqlSession执行完SQL之后需要关闭SqlSession
   sqlSession.close();
System.out.println(lstUsers);

}
}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值