利用Mybatis实现数据库增删改查以及junit的使用

版权声明:未经允许不得随意转载,著作权归__盛某人所有 https://blog.csdn.net/NaXieNianWoMenYiQ/article/details/88316816

在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>

	<!-- 起别名 -->
	<typeAliases>
		<!-- type:指的是要被定义别名的类的全限定名 -->
		<typeAlias type="com.cbb.pojo.User" alias="user" />
		
		<!-- 批量起别名 name:包 
		会扫描配置的包下的所有的类然后批量的起别名。别名为类名(首字母大写或小写都可以)-->
		<package name="com.cbb.pojo"/>
	</typeAliases>
	
	
	
	
	<!-- 运行时环境:与spring整合后就不需要了
	default:运行哪个冠军,里面是id -->
	<environments default="mysql">
		<environment id="mysql">
			<!-- 事务管理 -->
			<transactionManager type="JDBC"></transactionManager>
			<!-- 数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>	
				<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf-8"/>
				<property name="username" value="root"/>
				<property name="password" value="root"/>
				
			</dataSource>
			</environment>
		</environments>
		<!-- 加载映射文件 -->
		<mappers>
			<mapper resource="UserMapper.xml"/>
		</mappers>
</configuration>

在实体类配置文件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">

<!-- namespace:分割sql -->
<mapper namespace="UserMapper">
	
	<!-- 入门程序:根据用户id查询用户信息
		id:唯一的(本namespace下唯一),用于标识映射文件的sql
		parameterType:输入参数类型;支持的基本类型包括   :java基本类型,pojo对象和hashmap
		resultMap:输出参数类型;支持的基本类型包括   :java基本类型,pojo对象和hashmap,指定为单条记录的类型
		#{}:占位符,注意:如果输入参数类型是基本类型,则#{}里面可以是任意参数,或者是#{}
	 -->
	<select id="selectById" parameterType="int" resultType="com.cbb.pojo.User">
		select * from user where id = #{id}
	</select>
	
	<!-- 名字模糊查询
	${}:取值方式使用的是sql拼接,没有进行sql注入的处理。应该少用
	如果输入参数是基本类型的,${}里只能是${value}
	 -->
	
	<select id="selectByName" parameterType="String" resultType="com.cbb.pojo.User">
		<!-- Select * from user where username Like '%${value}%' -->
		Select * from user where username Like CONCAT("%",#{username},"%")
	</select>
	
	<!-- 新增用户  useGeneratedKeys默认值为空,返回插入记录的主键,给keyProperty  -->
	<insert id="addUser" parameterType="com.cbb.pojo.User" useGeneratedKeys="true" keyProperty="id">
		
		insert into user(username,birthday,sex,address) Values(#{username},#{birthday},#{sex},#{address})
	</insert>
	
	<!-- 修改语句 -->
	<update id="updateUser" parameterType="com.cbb.pojo.User">
		update user set username=#{username},sex=#{sex} where id=#{id}
	</update>
	
	<!-- 删除用户 -->
	<delete id="deleteUser" parameterType="int">
		delete from user where id=#{id}
	</delete>
</mapper>

实体类User:

package com.cbb.pojo;

import java.util.Date;

public class User {
	
	private int id;
	private String username;
	private Date birthday;
	private String sex;
	private String address;
	

	
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", birthday=" + birthday + ", sex=" + sex + "]";
	}
	
	
	
}

数据库我在这就不写了,自己根据实体类建吧

Junit的测试类

其中的@Before注解下函数会在@Test注解下的函数之前被运行,@After注解下函数会在@Test注解下的函数之后被运行

增删改后要写事务提交的  sqlSession.commit(); 语句

查找不用

package com.cbb.test;

import java.util.Date;
import java.util.List;
import java.io.IOException;
import java.io.InputStream;

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 org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.cbb.pojo.User;

public class UserMTest {
	
	private SqlSession sqlSession;
	
	@Before
	public void init() {
		//初始化 加载环境 创建会话工厂 获取会话
		try {
			//1.加载mybatis的运行环境 io流的方式去读取全局配置文件
			InputStream iStream =Resources.getResourceAsStream("mybatis.xml");
			
			//2.创建会话工厂
			SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(iStream);
			
			//3.获取会话
			sqlSession = sqlSessionFactory.openSession();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	@Test
	public void selectById() {
		//4.操作数据库
		//第一个参数:statement的id  具体执行的Sql  写法是:namespace.id
		//第二个参数:值
		User user=(User)sqlSession.selectOne("UserMapper.selectById",1);
		
		System.out.println(user.toString());
	}
	
	/**
	 * 查询用户
	 */
	@Test
	public void selectByName() {
		//4.操作数据库
		//第一个参数:statement的id  具体执行的Sql  写法是:namespace.id
		//第二个参数:值
		List<User> users=sqlSession.selectList("UserMapper.selectByName","三");
		
		System.err.println(users);
	}
	
	
	/**
	 * 新增用户的测试用例
	 */
	@Test
	public void addUser() {
		
		User user=new User();
		user.setUsername("Tom");
		user.setBirthday(new Date());
		user.setSex("男");
		user.setAddress("洛杉矶");
		int res=sqlSession.insert("UserMapper.addUser", user);
		sqlSession.commit();

	}
	
	/**
	 * 修改用户
	 */
	@Test
	public void updateUser() {
		
		User user=new User();
		user.setId(49);
		user.setUsername("Jack");
		user.setBirthday(new Date());
		user.setSex("女");
		user.setAddress("洛杉矶");
		int res=sqlSession.update("UserMapper.updateUser", user);
		sqlSession.commit();
		System.err.println(res);
	}
	
	
	@Test
	public void deleteUser() {
		
		sqlSession.delete("UserMapper.deleteUser", 50);
		sqlSession.commit();
	}
	@After
	public void after() {
		//释放资源
		sqlSession.close();
	}
}

猜你喜欢

转载自blog.csdn.net/NaXieNianWoMenYiQ/article/details/88316816