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 ...
随机推荐
- JS中数组对象去重
JS数组去重 JS中对数组去重最好不要用unique方法,该方法主要是对dom节点数组的去重,如果对普通的数组元素去重只会去掉与之相邻的重复元素,也就是如果数组中还有不相邻的重复元素存在,将不会被去掉 ...
- gradlew常用命令
./gradlew -v 查看版本 ./gradlew clean 清理.下载依赖 ./gradlew build 构建 libgdx项目中的gradlew run: ./gradlew deskt ...
- [LeetCode]题解(python):049-Groups Anagrams
题目来源 https://leetcode.com/problems/anagrams/ Given an array of strings, group anagrams together. For ...
- 根据 字数 确定 UI控件高度
//字体 textLabel.font = [UIFont systemFontOfSize:13]; CGFloat labelWidth = [UIScreen mainScreen].bound ...
- 转载:XPath基本语法
出处:http://www.cnblogs.com/Miko2012/archive/2012/10/26/2740840.html XPath的语法最基本的节点之间用/,属性用@,还有几个函数记住了 ...
- 忘记Mysql的root密码的处理办法
1,停止MYSQL服务,CMD打开DOS窗口,输入 net stop mysql 2,在CMD命令行窗口,进入MYSQL安装目录 比如E:\Program Files\MySQL\MySQL Serv ...
- http://www.cnblogs.com/dumuqiao/p/3654702.html?utm_source=tuicool&utm_medium=referral
http://www.cnblogs.com/dumuqiao/p/3654702.html?utm_source=tuicool&utm_medium=referral
- asp.net中session的原理及应用
Session简介丶特性 1.Session是一种Web会话中的常用状态之一. 2.Session提供了一种把信息保存在服务器内存中的方式.他能储存任何数据类型,包含自定义对象. 3.每个客户端的Se ...
- iOS block里的self
block是可以捕捉上下文的特殊代码块. block可以访问定义在block外的变量,当在block中使用时,它就会为其在作用域内的每个标量变量创建一个副本. 如果通过self拥有一个block,然后 ...
- GT-n8000平板开机密码忘记 解决办法
开机密码忘记了 1: 关机 (不需要连接电脑) 2: 音量上 开机键 一起按住 别松手 直至 进入 英文界面 Android system recovery <3e> 备注:音量键方向错误 ...