您的位置:首页 > 数据库

一、mybatis的CRUD-基于SQL映射

2016-01-09 12:30 316 查看
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]

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: