您的位置:首页 > 其它

MyBatis框架搭建及增删改查操作

2016-09-21 20:36 609 查看

一.搭建好myBatis的环境

  1.引入jar包

    (1).mybatis-3.2.7jar核心jar

    (2).mysql核心jar

    (3).junit-4.9.jar

  2.创建mybatis全局配置文件SqlMapConfig.xm(名字自定义)    

    配置了数据源、事务等mybatis运行环境,配置映射文件(配置sql语句)

  3.mapper代理开发映射文件User.xml

  4.目录结构如下

    


二.增删改查基本操作

  1.配置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>
<!-- 和spring整合后 environments配置将废除-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理,事务的控制有mybatis-->
<transactionManager type="JDBC" />
<!-- 数据库连接池,由mybatis管理-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="fxq123" />
</dataSource>
</environment>
</environments>

<mappers>
<mapper resource="sqlmap/User.xml"/>
</mappers>

</configuration>

  

  2.配置User.xml映射,将sql语句封装到mappedStatement对象中,进行增删改查

<?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进行分类化管理,理解sql隔离 注意:使用mapper代码方法开发,namespace有特殊重要的作用 -->
<mapper namespace="test">
<!-- 在映射文件中配置很多sql语句 -->
<!-- 需求:通过id查询用户表的记录 -->
<!-- 通过select执行数据库的查询 -->
<!-- id:标识映射文件中的sql -->
<!-- 将sql语句封装到mappedStatement对象中,所以将id成为statement 的id -->

<select id="findUserById" parameterType="int"
resultType="cn.itcast.mybatis.po.User">
select * from USER where id = #{id}
</select>
<!-- 自定义条件查询用户列表 -->
<!-- resultType:指定就是单条记录所映射的java对象类型 -->
<select id="findUserByName" parameterType="java.lang.String"
resultType="cn.itcast.mybatis.po.User">
select * from USER where username like '%${value}%'
</select>

<!-- 添加用户 parameterType:指定输入参数类型是pojo(包括:用户信息) #{}中指定pojo的属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值; -->
<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT
LAST_INSERT_ID()
</selectKey>
insert into USER (id,username,birthday,sex,address)
values(#{id},#{username},#{birthday},#{sex},#{address})
</insert>

<!-- 删除 -->
<delete id="deleteUser" parameterType="java.lang.Integer">
delete from USER WHERE id
= #{id}
</delete>
<!-- 更新 -->
<update id="updateUser" parameterType="cn.itcast.mybatis.po.User">
update USER set username =
#{username},birthday=#{birthday},sex=#{sex},address=#{address} where
id = #{id}
</update>
</mapper>


  3.根据Mybatis框架结构,在java代码中创建sqlSession 执行程序。

</pre></p><p><pre name="code" class="java">package cn.itcast.mybatis.first;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
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 org.junit.Test;
import cn.itcast.mybatis.po.User;

/**
* 入门程序 2016年9月21日14:46:51
*
* @author fxq
*
*/
public class MybatisFirst {

//获得SqlSession
public SqlSession getSqlSession() throws IOException {
// mybastis配置文件
String resource = "SqlMapConfig.xml";
// 得到配置文件流
InputStream impuStream = Resources.getResourceAsStream(resource);
// 创建会话工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(impuStream);
// 通过工厂得到sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}

// 根据id查询用户信息,得到一条记录结果
@Test
public void findUserByIdTest() throws IOException {
//获得SqlSession
SqlSession sqlSession=getSqlSession();
// 通过sqlSession操作数据库
// 第一个参数:映射文件中的statement的id,等于=namespace+"."+statement的id;
// 第二个参数:指定和映射文件所匹配的parameterType类型的参数
// sqlSession.selectOne结果是与映射文件中的所匹配的resultType类型的对象;
User user = sqlSession.selectOne("test.findUserById", 1);
System.out.println(user);
// 释放资源
sqlSession.close();
}

/**
* 模糊查询
*
* @throws IOException
*/
@Test
public void findUserbyNameTest() throws IOException {

//获得SqlSession
SqlSession sqlSession=getSqlSession();
// List中的user和映射文件中resultType所指定的类型一直
List<User> userList = sqlSession
.selectList("test.findUserByName", "小明");
System.out.println(userList);
sqlSession.close();

}

/**
* 插入数据
*
* @throws IOException
*/
@Test
public void insertUserTest() throws IOException {
//获得SqlSession
SqlSession sqlSession=getSqlSession();
// 插入用户对象
// 添加用户信息
User user = new User();
user.setUsername("张小明");
user.setBirthday(new Date());
user.setSex("1");
user.setAddress("河南郑州");
sqlSession.insert("test.insertUser", user);

// 提交
sqlSession.commit();
System.out.println(user.getId());
sqlSession.close();
}

/**
* 删除用户
*
* @throws IOException
*/
@Test
public void deleteUserTest() throws IOException {
//获得SqlSession
SqlSession sqlSession=getSqlSession();
sqlSession.delete("test.deleteUser", 31);
// 提交
sqlSession.commit();
sqlSession.close();
}

/**
* 更新用户
*
* @throws IOException
*/
@Test
public void updateUserTest() throws IOException {
//获得SqlSession
SqlSession sqlSession=getSqlSession();
User user = new User();
user.setId(28);
user.setBirthday(new Date());
user.setUsername("范晓权");
user.setAddress("河北省鸡泽县");
user.setSex("2");

sqlSession.update("test.updateUser", user);
sqlSession.commit();
sqlSession.close();
}
}


三.总结:

  MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: