一、使用MyBatis对表执行CRUD操作——基于XML的实现

1、定义sql映射xml文件

  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="com.mi.mapping.UserInfoMapper"> <select id="getUser" resultType="com.mi.entity.User">
SELECT id,user_name userName,age FROM user_t where id=1
</select> <!-- 创建用户(Create) -->
<insert id="addUser" parameterType="com.mi.entity.User">
insert into user_t(id,user_name,password,age) values(11,#{userName},0,#{age})
</insert> <!-- 删除用户(Remove) -->
<delete id="deleteUser" parameterType="int">
delete from user_t where id=#{id}
</delete> <!-- 修改用户(Update) -->
<update id="updateUser" parameterType="com.mi.entity.User">
update user_t set user_name=#{userName},age=#{age} where id=#{id}
</update> <!-- 查询全部用户-->
<select id="getAllUsers" resultType="com.mi.entity.User">
select * from user_t
</select>
</mapper>
package com.mi.demo;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import com.mi.entity.User; public class TestCRUDByXmlMapper { @Test
public void testAdd(){
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
String statement = "com.mi.mapping.UserInfoMapper.addUser";
User user = new User();
user.setUserName("xinzhao");
user.setAge(20); int insertResult = sqlSession.insert(statement,user);
sqlSession.close();
System.out.println(insertResult);
} @Test
public void testUpdate(){
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
String statement = "com.mi.mapping.UserInfoMapper.updateUser"; User user = new User();
user.setId(11);
user.setUserName("xinzhao");
user.setAge(22);
int result = sqlSession.update(statement, user);
sqlSession.close();
System.out.println(result);
} @Test
public void testDelete(){
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
String statement = "com.mi.mapping.UserInfoMapper.deleteUser";
User user = new User();
user.setId(11);
int result = sqlSession.delete(statement, user);
sqlSession.close();
System.out.println(result);
} @Test
public void testGetAll(){
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
String statement = "com.mi.mapping.UserInfoMapper.getAllUsers";
List<User> userList = sqlSession.selectList(statement);
sqlSession.close();
for(User user : userList){
System.out.println(user.getUserName());
}
} }

二、使用MyBatis对表执行CRUD操作——基于注解的实现

  1、定义sql映射的接口

  UserMapper接口的代码如下:

package com.mi.demo;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import com.mi.entity.User; public interface UserMapper { @Insert(" insert into user_t(id,user_name,password,age) values(11,#{userName},0,#{age})")
public int addUser(User user); @Delete("delete from user_t where id=#{id}")
public int deleteById(int id); @Update("update user_t set user_name=#{userName},age=#{age} where id=#{id}")
public int update(User user); @Select("SELECT id,user_name userName,age FROM user_t where id=1")
public User getById(int id); @Select("select * from user_t")
public List<User> getAll();
}

2、在conf.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>
<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/mi" />
<property name="username" value="root" />
<property name="password" value="dbdaocom" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mi/mapping/UserInfoMapper.xml"/><!-- 注册userMapper.xml文件, -->
<mapper class="com.mi.demo.UserMapper"/><!-- 注册UserMapper映射接口-->
</mappers>
</configuration>

单元测试类的代码如下:

package com.mi.demo;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import com.mi.entity.User; public class TestCRUDByAnnotationMapper { @Test
public void testAdd() {
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
// 得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setUserName("用户xdp");
user.setAge(20);
int result = mapper.addUser(user);
sqlSession.close();
System.out.println(result);
}
/**
* ...the end
*/
}

用到的MyBatisUtil工具类代码如下:

package com.mi.demo;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisUtil {
/**
* 获取SqlSessionFactory
*
* @return SqlSessionFactory
*/
public static SqlSessionFactory getSqlSessionFactory() {
// mybatis的配置文件
String resource = "conf.xml";
// 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
// 构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
return sessionFactory;
} /**
* 获取SqlSession
*
* @return SqlSession
*/
public static SqlSession getSqlSession() {
return getSqlSessionFactory().openSession();
} /**
* 获取SqlSession
*
* @param isAutoCommit
* true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务
* false表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.
* commit()提交事务
* @return SqlSession
*/
public static SqlSession getSqlSession(boolean isAutoCommit) {
return getSqlSessionFactory().openSession(isAutoCommit);
}
}

mybatis(二)执行CRUD操作的两种方式配置和注解的更多相关文章

  1. 实例讲解Springboot整合MongoDB进行CRUD操作的两种方式

    1 简介 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库.两者在分布式.微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合Mon ...

  2. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...

  3. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...

  4. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  5. 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    [转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...

  6. MyBatis学习笔记(二)——使用MyBatis对表执行CRUD操作

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4262895.html 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用My ...

  7. 二:MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  8. 使用MyBatis对表执行CRUD操作

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...

  9. MyBatis入门学习教程-使用MyBatis对表执行CRUD操作

    上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...

随机推荐

  1. win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://goldlion.blog.51cto.com/4127613/834075 引子 ...

  2. 【Android测试】【随笔】Bugtags初体验

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5410003.html 前言 早晨接到一个临时任务,就是尝试 ...

  3. 针对JD-GUI

    switch(0){ case 1001: JSONObject jsoObj; String data = null; boolean isclose = false; try{ jsoObj = ...

  4. 雾里看花终隔一层——探析package和import

    package是什么 package好比java用来组织文件的一种虚拟文件系统.package把源代码.java文件,.class文件和其他文件有条理的进行一个组织,以供java来使用. 源代码的要求 ...

  5. linux与linux,linux与windows之间用SSH传输文件

    linux与linux,linux与windows之间用SSH传输文件linux与linux之间传送文件:scp file username@hostIP:文件地址    例: scp abc.txt ...

  6. table 操作

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  7. Asp.net MVC中Route的理解

    在Asp.net MVC中,对于一个请求,是通过路由找到对应的Controller类中的对应Action,并与model进行交互,最后返回到view. 就是说Asp.net MVC是用Route来定义 ...

  8. JavaScript实现在textbox输入时自动去数据库匹配并找出类似值列出,选择后记得将值填入本textbox及下一个textbox

    1. <script src='<%= Application["rootURL"] %>JS/jquery-1.4.1.min.js' type="t ...

  9. LeetCode Count Complete Tree Nodes

    原题链接在这里:https://leetcode.com/problems/count-complete-tree-nodes/ Given a complete binary tree, count ...

  10. RouterOS软路由常用命令

    修改用户密码 [admin@MikroTik]>/user                               #进入操作路径 [admin@MikroTik]/user>prin ...