Mybatis 注解@select,@detele,@update,@insert的简单应用

Mybatis基于注解方式实现CRUD(增删查改)操作,相较于传统的XML方式,能有效地简化代码,并更有利于代码维护,且可读性更高!
接下来,将通过注解的方式来实现基本的增删查改操作。

Step1 创建了新的数据库

创建数据库ssm20181229test,并创建了table:user,user表结构和表内容如下:
在这里插图1 user表结构入图片描述在这里插入图片描述

Step2 在eclipse下创建了maven工程:mybatis20190102testAnnotation。

完整的工程结构目录如下:
在这里插入图片描述

Step3配置pom.xml

代码如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mybatis</groupId>
  <artifactId>mybatis20190102testAntotation</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
   <build>
    <plugins>
         <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId> 
               <version>3.8.0</version>             
         	   
         	   <configuration>                
                 <source>10</source>     
                 <target>10</target>   
    		   </configuration>      
         </plugin> 
      </plugins>
  </build>
  
  <dependencies>
  	<dependency>
  		<groupId>com.mybatis</groupId>
 		<artifactId>pomModule</artifactId>
 		<version>0.0.1-SNAPSHOT</version>
  	</dependency>
  </dependencies>
</project>

为了图方便,我这里直接引入了我之前统一配置的pomModule工程的依赖,pomModule工程中引入了SSM框架的全部依赖,详情参考我的博客:解决maven项目中pom.xml添加依赖文件的繁琐操作的办法

Step4 创建mybatis.xml配置文件

在src/main/resources源文件下创建了mybatis.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.cj.jdbc.Driver" />
				<property name="url" 
				value="jdbc:mysql://localhost/ssm20181229test?useSSL=false&amp;serverTimezone=UTC&amp;allowPublicKeyRetrieval=true" />
				<property name="username" value="root" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
	</environments>

	<mappers>
		<!-- 在xml配置下使用resource来指定xml文件 -->
		<!-- <mapper resource="UserMapper.xml" /> -->
		
		<!-- 注解配置下,使用class来指定Mapper类 -->
		<mapper class="com.cr.mapper.UserMapper"/>
	</mappers>

</configuration>

Step5 创建User.java类

代码如下:

package com.cr.pojo;
public class User {
	private int userId;
	private String userName;
	private String userPassword;
	private int userAge;
	private String userEmail;
	
	public int getUserAge() {
		return userAge;
	}
	public void setUserAge(int userAge) {
		this.userAge = userAge;
	}
	public String getUserEmail() {
		return userEmail;
	}
	public void setUserEmail(String userEmail) {
		this.userEmail = userEmail;
	}
	public int getUserId() {
		return userId;
	}
	public void setUserId(int userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPassword() {
		return userPassword;
	}
	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}
}

Step6 创建UserMapper接口

package com.cr.mapper;

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.cr.pojo.User;

public interface UserMapper
{
	//selectAll
	@Select("select * from user")
	public List<User> getAllUsers();
	//select
	@Select("select * from user where userId = #{userId}")
	public User getUserById(int userId);
	
	//insert
	@Insert("insert into user(userName,userPassword,userAge,userEmail) "
			+ "values(#{userName},#{userPassword},#{userAge},#{userEmail}) ")
	public void insertUser(User user);
	
	//delete
	@Delete("delete from user where userId = #{userId}")
	public void deleteUserById(int userId);
	
	//update
	@Update("UPDATE USER SET userName = #{userName},userPassword = #{userPassword},userAge = #{userAge},userEmail = #{userEmail}" + 
			"WHERE userId = #{userId}")
	public void updateUser(User user);
}

step7创建测试类:TestAnnotation.java

代码如下:

package com.cr.main;

import java.io.Reader;
import java.util.List;

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 com.cr.mapper.UserMapper;
import com.cr.pojo.User;

public class TestAnnotation {
	 private static SqlSessionFactory sqlSessionFactory;
	    private static Reader reader;
	    

	    static {
	        try {
	            reader = Resources.getResourceAsReader("mybatis.xml");
	            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
	    }

	    public static SqlSessionFactory getSession() {
	        return sqlSessionFactory;
	    }

	    /**
	     * @param args
	     */
	    public static void main(String[] args) {
// 		   testSelectAll();
//	       testSelect(2);
//	       testInsert();
//	       testDelete(12);
	       testUpdate();
	    }
	    
	    
	    //select查询测试模块:根据id获得User对象
	    private static void testSelect(int userId) 
	    {	
	    	 SqlSession session = sqlSessionFactory.openSession();
		        try 
		        {
		        	UserMapper userMapper = session.getMapper(UserMapper.class);
		        	User user = userMapper.getUserById(userId);
		        	if(user != null)
		        	{
		        		System.out.println(user.getUserId()+"||"+user.getUserName()+"||"+user.getUserPassword()+"||"+user.getUserAge()
		        		+"||"+user.getUserEmail());
		        	}
		        	else
		        	{
		        		System.out.println("userId为"+userId+"的用户不存在!可能未创建或者已经被删除。");
		        	}

		        } finally {
		            session.close();
		        }
	    }
	    //delete查询测试模块:
	    private static void testDelete(int userId) 
	    {
	    	SqlSession session = sqlSessionFactory.openSession();
	        try 
	        {
	        	UserMapper userMapper = session.getMapper(UserMapper.class);
	        	System.out.println("Before delete:");
	        	testSelect(userId);
	        	userMapper.deleteUserById(userId);
	        	//注意这里需要提交session
	        	session.commit();
	        	System.out.println("After delete:");
	        	//判断是否删除成功
	        	testSelect(userId);
	        } finally {
	            session.close();
	        }
	    }
	    //insert测试模块:向user表中插入行
	    private  static void testInsert()
	    {	
	    	//构造要插入的user对象
	       User user = new User();
	       user.setUserId(0);
	       user.setUserName("NewName");
	       user.setUserEmail("ssssqas@qq.com");
	       user.setUserAge(999);
	       user.setUserPassword("221111");
	       
	    	SqlSession session = sqlSessionFactory.openSession();
	        try 
	        {
	        	UserMapper userMapper = session.getMapper(UserMapper.class);
	        	System.out.println("Before insert:");
	        	testSelectAll();
	        	userMapper.insertUser(user);
	        	//注意这里需要提交session
	        	session.commit();
	        	System.out.println("After insert:");
	        	testSelectAll();
	        } finally {
	            session.close();
	        }
	    }
	    //update测试模块
	    private static void testUpdate()
	    {	
	    	   User user = new User();
		       user.setUserId(3);
		       user.setUserName("zhoujielun111");
		       user.setUserEmail("ssssqas@qq.com");
		       user.setUserAge(999);
		       user.setUserPassword("221111");
	    	SqlSession session = sqlSessionFactory.openSession();
	        try 
	        {	
	        	UserMapper userMapper = session.getMapper(UserMapper.class);
	        	System.out.println("Before update:");
	        	testSelect(user.getUserId());
	        	userMapper.updateUser(user);
	        	//注意这里需要提交session
	        	session.commit();
	        	System.out.println("After update:");
	        	testSelect(user.getUserId());
	        } finally {
	            session.close();
	        }
	    }
	    
	    //selectAll测试模块
	    private static void testSelectAll()
	    {
	    	SqlSession session = sqlSessionFactory.openSession();
	        try 
	        {
	        	UserMapper userMapper = session.getMapper(UserMapper.class);
	        	System.out.println("All users:");
	        	List<User> users = userMapper.getAllUsers();
	        	for(User user:users)
	        	{
	        		System.out.println(user.getUserId()+"||"+user.getUserName()+"||"+user.getUserPassword()+"||"+user.getUserAge()
	        		+"||"+user.getUserEmail());
	        	}
	        } finally {
	            session.close();
	        }
	    }
}

结语

至此,创建工作全部完成。(2019.01.02)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值