`

一、mybatis的CRUD-基于SQL映射

阅读更多
0.创建maven项目,添加jar包
<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.38</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.3.0</version>
		</dependency>
	</dependencies>

1.框架结构
[img]

[/img]

2.创建User实体
private int id;
private String name;
private String password;
private String telPhone;
private String email;


set,get方法省略。。。
3.mybatis-config.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>
	<!-- 此配置文件遵循一定的顺序
	properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,plugins,environments,databaseIdProvider,mappers
	 -->
	 <!-- 方式一 -->
	 <!-- 
	<typeAliases>
		<typeAlias type="com.yxhweb.entity.User" alias="user" />
	</typeAliases>
	 -->
	<!-- 方式二(开发使用) -->
	<typeAliases>
		<package name="com.yxhweb.entity"/>
	</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:3308/db_mybatis" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="com/yxhweb/mappers/UserMapper.xml" />
		<!-- <package name="com.yxhweb.mappers" /> -->
	</mappers>
	
</configuration>


4.编写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">
<mapper namespace="user">
	<!-- 添加 -->
	<insert id="add" useGeneratedKeys="true" keyColumn="id" keyProperty="id" parameterType="user">
		INSERT INTO t_user(NAME,PASSWORD,telPhone,email) VALUES(#{name},#{password},#{telPhone},#{email})
	</insert>
	
	<!-- 删除 -->
	<insert id="deleteById" parameterType="int" >
		delete from t_user where id=#{id}
	</insert>
	
	<!-- 根据id查询 -->
	<!-- 当传入的参数为一个是id的名称随便写,如#{xxxxx}
		resultType:使用了别名的方式,如果使用package的方式,对应实体的名称,首字母小写
	 -->
	<select id="getById" parameterType="int"  resultType="user">
		select id,name,password,telPhone,email from t_user where id=#{id}
	</select>
	
	<!-- 
	resultMap:若表的列名(别名)与实体类的属性名不一致,就不能使用resultType,此时使用resultMap元素来做列名与属性名之间的映射
	 -->
	 <!-- 学生实体的属性与学生列表名的映射 -->
	 <resultMap  id="UserResultMap" type="user">
		<id property="id" column="id"/>	 
		<result property="name" column="name"/>
		<result property="password" column="password"/>
		<result property="telPhone" column="telPhone"/>
		<result property="email" column="email"/>
	 </resultMap>
	 <select id="getById2" parameterType="int"  resultMap="UserResultMap">
		select id,name,password,telPhone,email from t_user where id=#{id}
	</select>
	
	<!-- 根据id修改 -->
	<update id="update" parameterType="user">
		update t_user set name=#{name},password=#{password},telPhone=#{telPhone},email=#{email} where id=#{id}
	</update>
	
</mapper> 

5.编写测试方法
package com.yxhweb.test;

import java.io.Reader;

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.yxhweb.entity.User;

public class UserTest {
	SqlSession session=null;
	@Before
	public void setUp() throws Exception {
		Reader reader=Resources.getResourceAsReader("mybatis-config.xml");
		SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
		session=factory.openSession();
	}
	@After
	public void tearDown() throws Exception {
		session.close();
	}

	/**
	 * 添加测试
	 */
	@Test
	public void add() {
		User user=new User("dd", "dd", "12345678912", "123456@163.com");
		//调用sql语句时,使用  “命名空间.SQL语句id” 的形式
		int count=session.insert("user.add",user);
		session.commit();//提交事务
		System.out.println("受影响的条数----->"+count+"返回插入的userId----->"+user.getId());
	}
	
	/**
	 * 删除测试
	 */
	@Test
	public void delete() {
		//调用sql语句时,使用  “命名空间.SQL语句id” 的形式
		int count=session.delete("user.deleteById",8);
		session.commit();//提交事务
		System.out.println("受影响的条数----->"+count);
	}
	
	/**
	 *根据id查询测试
	 */
	@Test
	public void getById() {
		//调用sql语句时,使用  “命名空间.SQL语句id” 的形式
		User user=session.selectOne("user.getById",1);
		System.out.println("查询到的结果"+user.getName());
		
	}
	/**
	 * 使用resultMap的方式
	 */
	@Test
	public void getById2() {
		//调用sql语句时,使用  “命名空间.SQL语句id” 的形式
		User user=session.selectOne("user.getById2",1);
		System.out.println("查询到的结果"+user.getName());
		
	}
	
	/**
	 * 修改测试
	 */
	@Test
	public void update() {
		User user=session.selectOne("user.getById2",1);
		user.setName("aa1");
		int count=session.update("user.update",user);
		session.commit();
		System.out.println("查询到的结果"+count);
		
	}
}



源码地址:链接:http://pan.baidu.com/s/1jHrcPWq 密码:v45h
  • 大小: 14.7 KB
  • 大小: 14.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics