Mybatis增删查改操作

    原生的Mybatis增删改查操作,没有和spring做集成

    0.项目环境

    jdk1.7, mysql5.7, eclispe4.5

    1.项目图示

   

   

    3.maven项目的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.neutron</groupId>
	<artifactId>flowers</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>flowers</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<!-- mybatis jar -->
		<dependency> 
			<groupId>org.mybatis</groupId>  
            <artifactId>mybatis</artifactId>  
            <version>3.3.1</version>  
        </dependency>  
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis-spring</artifactId>
		    <version>1.2.2</version>
		</dependency>
		<dependency>
		    <groupId>mysql</groupId>
		    <artifactId>mysql-connector-java</artifactId>
		    <version>5.1.38</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
	
	<build>
		<defaultGoal>compile</defaultGoal>
	</build>
</project>

    4.数据库连接文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
name=root
password=root

    5.mybatis配置文件
<?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>
	<!-- 作为属性值引入到conf.xml中 -->
	<properties resource="db.properties" />
	
	<!-- 配置实体类的别名 -->
	<typeAliases>
		<typeAlias type="com.neutron.flowers.entity.User" alias="User"/>
	</typeAliases>

	<!-- development : 开发模式 work : 工作模式 -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${name}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="com/neutron/flowers/mapper/userMapper.xml" />
	</mappers>
	
</configuration>

    6.实体类
package com.neutron.flowers.entity;

public class User 
{
	private int id;
	private String name;
	private int age;
	
	public User() 
	{
		super();
	}

	public User(int id, String name, int age) 
	{
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}

	// get set

<span style="font-family:SimSun;">        </span> @Override
	public String toString() 
	{
		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
	
}
   

    7.工具类,获取SqlSessionFactory和SqlSession

package com.neutron.flowers.utils;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisUtils {

	/**
	 * 获取SqlSessionFactory实例
	 * @return SqlSessionFactory实例
	 */
	public static SqlSessionFactory getSessionFactory() {
		String resource = "conf.xml";
		InputStream is = MybatisUtils.class.getClassLoader().getResourceAsStream(resource);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		return factory;
	}
	
	/**
	 * 获取SqlSession对象
	 * @param autoCommit 是否自动提交事务
	 * @return SqlSession对象
	 */
	public static SqlSession openSession(boolean autoCommit) {
		return getSessionFactory().openSession(autoCommit);
	}
}

    8.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相当于Id,需要唯一,此处设置为实体类包名+mapper文件名 -->
<mapper namespace="com.neutron.flowers.mapper.userMapper"> 
	<insert id="insert" parameterType="User">
		<!-- values后面写入名称由来,使用User的属性名称,根据反射原理 -->
		insert into users (name, age) values (#{name}, #{age})
	</insert>
	
	<select id="query" parameterType="int" resultType="User">
		select id,name,age from users where id = #{id}
	</select>
	
	<delete id="delete" parameterType="int">
		delete from users where id = #{id}
	</delete>
	
	<update id="update" parameterType="User">
		update users set age=#{age}, name=#{name} where id = #{id}
	</update>
	
	<!-- 虽然查询结果是List,凡是返回值类型依旧是User,而不是List -->
	<select id="getAllUsers" resultType="User">
		select id, name, age from users;
	</select>
</mapper>
     注意:

     1.因为在conf.xml中设置了别名,所以此处中resultType和parameterType中设置为User的选项,正常的路径设置应该是User的全路径.即:User代替com.neutron.flowers.entity.User

     2.插入数据的时候,注意为何可以使用类的属性名称替换

     3.查询数据获取为List的时候,返回值类型是List<E>中的E类型

   

     8.测试类

package com.neutron.flowers;

import java.util.List;

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

import com.neutron.flowers.entity.User;
import com.neutron.flowers.utils.MybatisUtils;

import junit.framework.Assert;
import junit.framework.TestCase;

public class UserTest extends TestCase {

	@Test
	public void testSelect() {
		// 1.创建Session实例
		SqlSession session = MybatisUtils.openSession(true);
		// statement = namespace + . + id
		String statement = "com.neutron.flowers.mapper.userMapper" + "." + "query";
		// 3.查询
		User user = session.selectOne(statement, 1);
		session.close();
		System.out.println(user);
	}

	@Test
	public void testInsert() {
		// 1.创建Session实例
		SqlSession session = MybatisUtils.openSession(true);

		// statement = namespace + . + id
		String statement = "com.neutron.flowers.mapper.userMapper.insert";
		// 2.添加
		int num = session.insert(statement, new User(0, "zhangsan", 12));
		session.close();
		Assert.assertEquals(1, num);
	}

	@Test
	public void testDelete() {
		// 1.创建Session实例
		SqlSession session = MybatisUtils.openSession(true);

		String statement = "com.neutron.flowers.mapper.userMapper.delete";
		// 如果删除不存在的数据返回个数为0
		int num = session.delete(statement, 5);
		session.close();
		Assert.assertEquals(1, num);
	}

	@Test
	public void testEdit() {
		// 1.创建Session实例
		SqlSession session = MybatisUtils.openSession(true);

		String statement = "com.neutron.flowers.mapper.userMapper.update";
		int num = session.update(statement, new User(1, "zhangsan", 15));
		session.close();
		Assert.assertEquals(1, num);
	}

	// 获取所有用户对象
	@Test
	public void testGetAllUsers() {
		// 1.创建Session实例
		SqlSession session = MybatisUtils.openSession(true);
		String statement = "com.neutron.flowers.mapper.userMapper.getAllUsers";
		// 2.查询
		List<User> users = session.selectList(statement);
		session.close();
		Assert.assertEquals(2, users.size());
	}
	
}


    

 

            

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值