Mybatis增删改查(CURD)

1.使用 mybatis 查询用户数据(读取用户列表)
2.使用 mybatis 增加用户数据
3.使用 mybatis 更新用户数据
4.使用 mybatis 删除用户数据

查询数据,前面已经讲过简单的查询单个用户数据,在这里将查询出用户列表,
要查询出列表,也就是返回 List, 在我们这个例子中也就是List<User> , 要以这种方式返回数据,需要在User.xml里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置。

在此示例中,我们需要使用到以下表:

接下我们创建一个表:user,并插入一条记录信息,其结构如下所示:
 
CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL DEFAULT '',
  `dept` varchar(254) NOT NULL DEFAULT '',
  `website` varchar(254) DEFAULT '',
  `phone` varchar(16) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
 
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'gaga', 'Tech', 'http://www.gaga.com', '13800009988');

我们首先来创建一个工程:mybatis-curd-03,与第一节中介绍的环境配置一样,加入所需的 jar 包:mysql-connector 和 mybatis3.jar。配置 conf.xml,其文件内容如下

注意:需要引入数据表的model:

<typeAliases>
        <typeAlias alias="User" type="me.gacl.domain.User" />
</typeAliases>
  
<?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>
    <typeAliases>
        <typeAlias alias="User" type="me.gacl.domain.User" />
    </typeAliases>
     
    <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:3306/yiibai" />
                <property name="username" value="root" />
                <property name="password" value="" />
            </dataSource>
        </environment>
    </environments>
     
    <mappers>
        <!-- 注册userMapper.xml文件,
        userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
        <!-- 注释 -->
        <mapper resource="me/gacl/mapping/userMapper.xml"/>
    </mappers>
     
</configuration>
  

2、创建 Java 类和接口
创建数据表的mode的java类,和相应的增删改查接口类以及实现方法类(配置)

数据表model类:

package me.gacl.domain;
 
public class User {
 
    private int id;
    private String name;
    private String dept;
    private String phone;
    private String website;
     
    public String getWebsite() {
        return website;
    }
    public void setWebsite(String website) {
        this.website = website;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDept() {
        return dept;
    }
    public void setDept(String dept) {
        this.dept = dept;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", dept=" + dept + ", phone=" + phone + ", website=" + website
                + "]";
    }
}
  

增删改查的接口类

IUser.java接口位于包me.gacl.dao 下,IUser.java接口代码内容如下:

package me.gacl.dao;
 
import java.util.List;
 
import me.gacl.domain.User;
 
public interface IUser {
 
    public List<User> getUserList();
     
    public void insertUser(User user);
     
    public void updateUser(User user);
     
    public void deleteUser(int userId);
     
    public User getUser(int id);

}
  
实现IUser.java增删改查类的配置方法

这里还需要一个XML文件,与前一小节中一样,使用的是 UserMapper.xml,在这我们分别对应了增删改查的操作(每一个操作的 ID 对应于IUser接口的方法),其内容如下:


<?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="me.gacl.dao.IUser">
 
    <select id="getUser" parameterType="int"
    resultType="me.gacl.domain.User">
    select * from user where id = #{id}
    </select>
     
    <insert id="insertUser" parameterType="User">
    INSERT INTO USER (name, dept, website, phone) VALUES (#{name}, #{dept}, #{website}, #{phone})
    </insert>
 
    <select id="getUserList" resultType="me.gacl.domain.User">
    select * from user
    </select>
 
 
    <update id="updateUser" parameterType="User">
        UPDATE USER SET name = #{name}, dept = #{dept}, website = #{website}, phone = #{phone} where id = #{id}
    </update>
 
    <delete id="deleteUser" parameterType="int">
    delete from user where id = #{id}
    </delete>
</mapper>
  
测试主程序:

package me.gacl.test;
 
import java.io.Reader;
import java.util.List;
import java.text.MessageFormat;
 
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 me.gacl.dao.IUser;
import me.gacl.domain.User;
 
public class Test3 {
 
    private static SqlSessionFactory sqlSessionFactory;
    private static Reader reader;
     
    static {
         
        try {
             
            reader = Resources.getResourceAsReader("conf.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);          
             
        }catch(Exception e)
        {
            e.printStackTrace();
        }
         
    }
     
     
    public static SqlSessionFactory getSession()
    {
        return sqlSessionFactory;
    }
     
     
     
    public static void main(String[] args)
    {
        SqlSession sqlSession = sqlSessionFactory.openSession();
        try {
                 
            //用户数据列表
            //getUserList();
             
            //插入数据
            //insertUser();
             
            //修改数据
            //updateUser();
             
            //删除数据
            deleteUser();
             
        }finally {
            sqlSession.close();
        }
    }
     
     
    public static void getUserList()
    {
        try {
            SqlSession sqlSession = sqlSessionFactory.openSession();
            IUser iuser = sqlSession.getMapper(IUser.class);
            //显示USER信息
            System.out.println("Test get start....");
            printUsers(iuser.getUserList());
            System.out.println("Test get finishing");
             
        }catch(Exception e)
        {
            e.printStackTrace();
        }
    }
     
     
    public static void printUsers(final List<User> users)
    {
         int count = 0;
         for(User user: users)
         {
             System.out.println( MessageFormat.format( "======User[{0}]======", ++count) );
             System.out.println("User id:" + user.getId());
             System.out.println("User name:"+user.getName());
             System.out.println("User dept:"+user.getDept());
             System.out.println("User website:"+user.getWebsite());
         }
    }
     
     
    public static void insertUser()
    {
        try {
             
            //连接sqlSession
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //获取mapper
            IUser iuser = sqlSession.getMapper(IUser.class);
            System.out.println("Test insert start......");
            //执行插入
            User user = new User();
            user.setId(0);
            user.setName("google");
            user.setDept("tech");
            user.setPhone("13888888889");
            user.setWebsite("http://www.google.com");
            iuser.insertUser(user);
            //提交事务
            sqlSession.commit();           
            System.out.println("Test insert end......");
            //插入后显示
            System.out.println("alter insert");
            getUserList();
            System.out.println("--------------------------------");
             
        }catch(Exception e)
        {
            e.printStackTrace();
        }
         
    }
     
     
    public static void updateUser()
    {
        try {
            //连接session
            SqlSession sqlSession = sqlSessionFactory.openSession();
            IUser iuser = sqlSession.getMapper(IUser.class);
            System.out.println("Test update start......");
            System.out.println(iuser.getUserList());
            System.out.println("-----------------------");
             
            //执行更新
            User user = iuser.getUser(1);
            user.setName("gaga");
            iuser.updateUser(user);
            //提交事务
            sqlSession.commit();
             
            System.out.println("-----------------------");
            System.out.println(iuser.getUserList());
            System.out.println("Test update end......");
             
        }catch(Exception e)
        {
            e.printStackTrace();
        }
    }
     
     
    public static void deleteUser()
    {
        try {
             
            //连接sqlSession
            SqlSession sqlSession = sqlSessionFactory.openSession();
            IUser iUser = sqlSession.getMapper(IUser.class);
            System.out.println("Test delete start......");
             
            //显示删除前的
            System.out.println("befor delete");
            printUsers(iUser.getUserList());
             
            iUser.deleteUser(1);
             
            //提交数据
            sqlSession.commit();
             
            //显示删除后的
            System.out.println(" alter delete ");
            printUsers(iUser.getUserList());
            System.out.println("Test delete end......");
             
        }catch(Exception e)
        {
            e.printStackTrace();
        }
    }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值