• 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();
    		}
    	}
    }
    

      

  • 相关阅读:
    图像 resize 代码:保留 aspect ratio(长宽比)
    Pytorch lr_scheduler 中的 last_epoch 用法
    torch.optim用法(参数组的设置)
    课程式学习(Curriculum Learning)
    扇贝单词本-隐藏中文释义 tampermonkey
    电话号码正向标记认证网站申请地址
    考研英语做题计时器网页版(每隔3分钟播放声音,提醒计时)
    mac关闭自动更新后还在每天提醒进行安装更新
    mac 自动生成自签证书脚本
    Ditto
  • 原文地址:https://www.cnblogs.com/achengmu/p/9170249.html
Copyright © 2020-2023  润新知