mybatis(二)执行CRUD操作的两种方式配置和注解

一、使用MyBatis对表执行CRUD操作——基于XML的实现

1、定义sql映射xml文件

  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="com.mi.mapping.UserInfoMapper">

     <select id="getUser" resultType="com.mi.entity.User">
        SELECT id,user_name userName,age FROM user_t where id=1
    </select>

     <!-- 创建用户(Create) -->
    <insert id="addUser" parameterType="com.mi.entity.User">
        insert into user_t(id,user_name,password,age) values(11,#{userName},0,#{age})
    </insert>

    <!-- 删除用户(Remove) -->
    <delete id="deleteUser" parameterType="int">
        delete from user_t where id=#{id}
    </delete>

    <!-- 修改用户(Update) -->
    <update id="updateUser" parameterType="com.mi.entity.User">
        update user_t set user_name=#{userName},age=#{age} where id=#{id}
    </update>

    <!-- 查询全部用户-->
    <select id="getAllUsers" resultType="com.mi.entity.User">
        select * from user_t
    </select>
</mapper>
package com.mi.demo;

import java.util.List;

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

import com.mi.entity.User;

public class TestCRUDByXmlMapper {

    @Test
    public void testAdd(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
        String statement = "com.mi.mapping.UserInfoMapper.addUser";
        User user = new User();
        user.setUserName("xinzhao");
        user.setAge(20);

        int insertResult = sqlSession.insert(statement,user);
        sqlSession.close();
        System.out.println(insertResult);
    }

    @Test
    public void testUpdate(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
        String statement = "com.mi.mapping.UserInfoMapper.updateUser";

        User user = new User();
        user.setId(11);
        user.setUserName("xinzhao");
        user.setAge(22);
        int result = sqlSession.update(statement, user);
        sqlSession.close();
        System.out.println(result);
    }

    @Test
    public void testDelete(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
        String statement = "com.mi.mapping.UserInfoMapper.deleteUser";
        User user = new User();
        user.setId(11);
        int result = sqlSession.delete(statement, user);
        sqlSession.close();
        System.out.println(result);
    }

    @Test
    public void testGetAll(){
        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
        String statement = "com.mi.mapping.UserInfoMapper.getAllUsers";
        List<User> userList = sqlSession.selectList(statement);
        sqlSession.close();
        for(User user : userList){
            System.out.println(user.getUserName());
        }
    }

}

二、使用MyBatis对表执行CRUD操作——基于注解的实现

  1、定义sql映射的接口

  UserMapper接口的代码如下:

package com.mi.demo;

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.mi.entity.User;

public interface UserMapper {

    @Insert(" insert into user_t(id,user_name,password,age) values(11,#{userName},0,#{age})")
    public int addUser(User user);

    @Delete("delete from user_t where id=#{id}")
    public int deleteById(int id);

    @Update("update user_t set user_name=#{userName},age=#{age} where id=#{id}")
    public int update(User user);

    @Select("SELECT id,user_name userName,age FROM user_t where id=1")
    public User getById(int id);

    @Select("select * from user_t")
    public List<User> getAll();
}

2、在conf.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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置数据库连接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost/mi" />
                <property name="username" value="root" />
                <property name="password" value="dbdaocom" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/mi/mapping/UserInfoMapper.xml"/><!-- 注册userMapper.xml文件, -->
        <mapper class="com.mi.demo.UserMapper"/><!-- 注册UserMapper映射接口-->
    </mappers>
</configuration>

单元测试类的代码如下:

package com.mi.demo;

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

import com.mi.entity.User;

public class TestCRUDByAnnotationMapper {

    @Test
    public void testAdd() {
        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
        // 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = new User();
        user.setUserName("用户xdp");
        user.setAge(20);
        int result = mapper.addUser(user);
        sqlSession.close();
        System.out.println(result);
    }
    /**
     * ...the end
     */
}

用到的MyBatisUtil工具类代码如下:

package com.mi.demo;

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 = Test1.class.getClassLoader().getResourceAsStream(resource);
        // 构建sqlSession的工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        return sessionFactory;
    }

    /**
     * 获取SqlSession
     *
     * @return SqlSession
     */
    public static SqlSession getSqlSession() {
        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);
    }
}
时间: 2024-10-10 08:28:20

mybatis(二)执行CRUD操作的两种方式配置和注解的相关文章

MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

本文中使用到的测试环境是上一篇博文中的测试环境. 一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis

MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(二)--使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对users表执行CRUD操作.本文中使用到的测试环境是上一篇博文中的测试环境. 一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMa

使用MyBatis对表执行CRUD操作

一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-ma

【Mybatis】MyBatis对表执行CRUD操作(三)

本例在[Mybatis]MyBatis配置文件的使用(二)基础上继续学习对表执行CRUD操作 使用MyBatis对表执行CRUD操作 1.定义sql映射xml文件(EmployeeMapper.xml) 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "htt

day2-操作系统,编程语言分类,执行Python程序的两种方式,变量,python的内存管理,

1    什么是操作系统 操作系统位于计算机与应用软件之间,是一个协调,管理,控制计算机硬件资源与软件资源的控制程序 2     为何要有操作系统? 1,控制硬件. 2,把对硬件的复杂的操作封装成优美简单的接口,给用户或者应用程序去使用 注意:一套完整的计算机系统包含三部分 应用程序:比如QQ,暴风影音 操作系统:比如windows linux unix 计算机硬件 强调:我们以后开发的都是应用程序,应用程序无法直接操作硬件,但凡要操作硬件,都是调用操作系统的接口 3 编程语言的分类 1,机器语

操作系统+编程语言的分类+执行python程序的两种方式+变量

1.什么是操作系统? 操作系统就是一个协调\管理\控制计算机硬件资源与软件资源的一个控制程序. 2.为何要操作系统? a.把复杂的硬件操作封装成简单的功能\接口用来给用户或者程序来使用(文件) b.把应用程序对硬件的竞争变得有序 3.如何用操作系统? 一套完整的计算机系统分为3层: 应用程序层 操作系统层 计算机硬件层 编程语言的分类 1.机器语言:直接使用二进制指令去编高于写程序(直接操作硬件) 优点:计算机无障碍理解,运行效率高. 缺点:开发效率低 2.汇编语言:使用英文标签代替二进制指令去

SpringBoot集成Mybatis实现多表查询的两种方式(基于xml)

 下面将在用户和账户进行一对一查询的基础上进行介绍SpringBoot集成Mybatis实现多表查询的基于xml的两种方式.   首先我们先创建两个数据库表,分别是user用户表和account账户表     user表:  account表:  然后创建实体类        **第一种通过创建子类的方式查询                             需求:查询所有的用户基础信息以及其所属的账户中的金额     1.创建想要得到多表查询数据的实体类(子类)            

IOS文件操作的两种方式:NSFileManager操作和流操作

1.文件的创建 -(IBAction) CreateFile { //对于错误信息 NSError *error; // 创建文件管理器 NSFileManager *fileMgr = [NSFileManager defaultManager]; //指向文件目录 NSString *documentsDirectory= [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; //创建一个目录 [[NSFi

php ,MySQL操作的两种方式

本文省略php对MySQL的面向过程的操作方式,介绍最常用的,面向对象的操作方式和PDO方式 面向对象的操作方式: <?php$servername = "localhost";$username = "username";$password = "password"; // 创建连接$conn = new mysqli($servername, $username, $password); // 确定数据库,创建连接//$conn = n