mybatis(二)执行CRUD操作的两种方式配置和注解
一、使用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操作的两种方式配置和注解的更多相关文章
- 实例讲解Springboot整合MongoDB进行CRUD操作的两种方式
1 简介 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库.两者在分布式.微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合Mon ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
[转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...
- MyBatis学习笔记(二)——使用MyBatis对表执行CRUD操作
转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4262895.html 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用My ...
- 二:MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- 使用MyBatis对表执行CRUD操作
一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...
- MyBatis入门学习教程-使用MyBatis对表执行CRUD操作
上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...
随机推荐
- 使用ASP.NET web API创建REST服务(二)
Creating a REST service using ASP.NET Web API A service that is created based upon the architecture ...
- 常用分类列表wp_list_categories()
使用: <ul> <?php $args= array( 'depth'=>1, 'orderby'=>id, 'style'=>none ); wp_list_c ...
- mysql基本sql语句大全(基础用语篇)
1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份 ...
- Shell Script-读取配置文件
需求 有时候在shell script里面需要一些执行,如果放在程序里面不便于统一管理,并且每一次修改路径都要去script里面改好麻烦,所以统一把路径放在配置文件中方便管理. 问题 如何读取相对应的 ...
- [LeetCode]题解(python):039-Combination Sum
题目来源 https://leetcode.com/problems/combination-sum/ Given a set of candidate numbers (C) and a targe ...
- sell-- wordPOI
1. http://poi.apache.org/ 2.创建项目,结构如下 三: 查看效果 打开: 测试源码: /* ========================================= ...
- https://my.oschina.net/huangyong/blog/161419
https://my.oschina.net/huangyong/blog/161419
- C语言:其他进制转换为十进制(方法二)
#include<stdio.h> #include<math.h> #include<string.h> #include<ctype.h> //其他 ...
- linux 挂载命令详解
挂载文件系统与卸载文件系统 mount / umount NO1. 挂载光驱 [root@rehat root]# mount -t iso9660 /dev/cdrom /mnt/cdrom NO2 ...
- C# 调用VC++的DLL,VC++封装DLL
VS中新建一个动态库项目 文件生成一个工程名对应的.cpp文件,该文件定义 DLL应用程序的导出函数. 工程内新建一个类OutputInt,我用类向导生成,工程中会添加OutputInt.cpp和Ou ...