mybatis实现最简单的增删改查
更多精彩文章欢迎关注公众号“Java之康庄大道”

1.数据库设计

2.项目结构(针对User不用管Blogger)

User.java
package com.yunqing.mybatis.bean;
public class User {
private Integer id;
private String name;
private String gender;
private String email;
//构造函数
public User() {
}
//带参构造函数
public User(Integer id, String name, String gender, String email) {
this.id = id;
this.name = name;
this.gender = gender;
this.email = email;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", gender='" + gender + '\'' +
", email='" + email + '\'' +
'}';
}
}
UserMapper.java接口类
package com.yunqing.mybatis.dao; import com.yunqing.mybatis.bean.User;
import org.apache.ibatis.annotations.Select; import java.util.List; public interface UserMapper {
//这种写法可以用于简单的sql操作,复杂的请写在sql的xml映射文件中
@Select("select * from t_user")
List<User> getAllUser(); User getUserById(Integer id);
//mybatis的增删改可以定义Integer|Long|boolean三种返回值类型
void insertUser(User user); void updateUser(User user); void deleteUserById(Integer id); }
UserMapper.xml(需要与接口类同名,批量注册到mybatis-config.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">
<!--
namespace:命名空间,指定为接口的全类名
selectUserById:唯一标识
resultType:返回值类型
-->
<mapper namespace="com.yunqing.mybatis.dao.UserMapper">
<select id="getUserById" resultType="com.yunqing.mybatis.bean.User">
select * from t_user where id = #{id}
</select>
<insert id="insertUser" parameterType="com.yunqing.mybatis.bean.User" useGeneratedKeys="true">
INSERT INTO t_user(name,gender,email) VALUES (#{name},#{gender},#{email})
</insert>
<update id="updateUser" parameterType="com.yunqing.mybatis.bean.User">
UPDATE t_user SET name=#{name},gender=#{gender},email=#{email} where id=#{id}
</update>
<delete id="deleteUserById">
DELETE from t_user where id=#{id}
</delete>
</mapper>
UserMapperAnnotation.java介绍注解的方式(不用写sql的xml映射文件 )
package com.yunqing.mybatis.dao; import com.yunqing.mybatis.bean.User;
import org.apache.ibatis.annotations.Select; public interface UserMapperAnnotation { @Select("SELECT * FROM t_user where id = #{id}")
User getUserById(Integer id);
}
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 resource="conf/dbconfig.properties"></properties>
<environments default="development">
<environment id="test">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///db_blog"/>
<property name="username" value="root"/>
<property name="password" value="5678"/>
</dataSource>
</environment>
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--将写好的sql映射文件注册到全局配置文件中,类路径下直接写 UserMapper.xml就行,要是在包中则写com/yunqing/.../UserMapper.xml-->
<mappers>
<!--<mapper resource="conf/UserMapper.xml"/>-->
<!--<mapper class="com.yunqing.mybatis.dao.UserMapperAnnotation"/>-->
<package name="com.yunqing.mybatis.dao"/>
</mappers>
</configuration>
dbconfig.properties
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql:///mybatis
jdbc.username = root
jdbc.password = 5678
测试文件MybatisTest.java
package com.yunqing.mybatis.test; import com.yunqing.mybatis.bean.Blogger;
import com.yunqing.mybatis.bean.User;
import com.yunqing.mybatis.dao.BloggerMapper;
import com.yunqing.mybatis.dao.UserMapper;
import com.yunqing.mybatis.dao.UserMapperAnnotation;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List; public class MybatisTest { @Test
public void getAllUser() throws IOException {
//从xml中获取sqlSessionFactory
String resource = "conf/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //获取sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(); //之前的mybatis的写法
/*User user = sqlSession.selectOne("com.yunqing.mybatis.UserMapper.selectUserById",1);
System.out.println(user);*/ //现在的mybatis接口式编程写法
//相当于接口的实现类
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> list = userMapper.getAllUser();//查询第一条记录
System.out.println(list);
sqlSession.close();
} @Test
public void getUserById() throws IOException {
//从xml中获取sqlSessionFactory
String resource = "conf/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //获取sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(); /*//之前的mybatis的写法
User user = sqlSession.selectOne("com.yunqing.mybatis.UserMapper.selectUserById",1);
System.out.println(user);*/ //现在的mybatis接口式编程写法
//相当于接口的实现类
UserMapperAnnotation userMapperAnnotation = sqlSession.getMapper(UserMapperAnnotation.class);
User user = userMapperAnnotation.getUserById(1);//查询第一条记录
System.out.println(user);
sqlSession.close();
}
@Test
public void insertUser() throws IOException {
String resource = "conf/mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); //使用自动提交,如果不使用则需要sqlSession.commit();手动提交
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//需要写有参和无参构造函数
User user = new User(null,"Letme","1","letme@qq.com");
userMapper.insertUser(user);
//sqlSession.commit();
}
@Test
public void updateUser() throws IOException {
String res = "conf/mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(res);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = new User(9,"uzi","1","uzi@qq.com");
userMapper.updateUser(user); }
@Test
public void deleteUserById() throws IOException {
String res = "conf/mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(res);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.deleteUserById(9);
}
/*@Test
public void test2() throws IOException {
String resource = "conf/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
BloggerMapper bloggerMapper = sqlSession.getMapper(BloggerMapper.class);
List<Blogger> list= bloggerMapper.getAllBloger();
System.out.println(list);
sqlSession.close();
}*/
}
如果想获取自增主键的值需要在sql的映射xml文件中加上这两个参数

mybatis实现最简单的增删改查的更多相关文章
- SSM框架之MyBatis框架实现简单的增删改查
MyBatis框架介绍 MyBatis是一个优秀的数据持久层框架,在实体类和SQL语句之间建立映射关系是一种半自动化的ORM实现,其封装性要低于Hibernate,性能优越,并且小巧,简单易学,应用也 ...
- Mybatis的简介+简单实现增删改查案例
@ 目录 总结内容 1. 基本概念 2. Mybatis的使用 需求 配置文件简介 总结 总结内容 1. 基本概念 Mybatis是一款优秀的持久层框架,它支持定制化SQL.存储过程以及高级映射.My ...
- springboot(三 使用mybatis +springboot 完成简单的增删改查)
先说一些注解: @EnableAutoConfiguration 可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器 ...
- MyBatis学习--简单的增删改查
jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: Public static void main(String[] args) ...
- MyBatis简单的增删改查以及简单的分页查询实现
MyBatis简单的增删改查以及简单的分页查询实现 <? xml version="1.0" encoding="UTF-8"? > <!DO ...
- SpringMVC之简单的增删改查示例(SSM整合)
本篇文章主要介绍了SpringMVC之简单的增删改查示例(SSM整合),这个例子是基于SpringMVC+Spring+Mybatis实现的.有兴趣的可以了解一下. 虽然已经在做关于SpringMVC ...
- SpringBoot+Mybatis+Maven+MySQL逆向工程实现增删改查
SpringBoot+Mybatis+MySQL+MAVEN逆向工程实现增删改查 这两天简单学习了下SpringBoot,发现这玩意配置起来是真的方便,相比于SpringMVC+Spring的配置简直 ...
- salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)
此篇请参看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environme ...
- 通过JDBC进行简单的增删改查
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
随机推荐
- spring mvc随笔
一.SpringMvc学习笔记1.使用SpringMvc时需在web.xml文件中添加配置 <servlet> <servlet-name>springMVC</serv ...
- [android] 练习使用ListView(一)
练习使用ListView,BaseAdapter,先展示文字的,再练习图片的 MainActivity.java package com.android.test; import android.ap ...
- 使用itext导出pdf
导出pdf这个功能是在工作中遇到的,写这个功能的时候遇到了不少的问题,比如中文乱码,不显示的问题,这些问题在我不断的测试,研究后都一一解决了. 第一步,先导入所需要的jar包 第一个jar包是用于解决 ...
- 互联网轻量级框架SSM-查缺补漏第二天
简言:第一天没咋看,因为看的时候已经是下午了.今天上午也因为工作上的事没咋看,本来想按照天去写的,但是内容会太散吧.我决定把整块的内容放在一起写了.天数啥的,就那样把. 还有,我只是言简意赅的去总结一 ...
- VUE的两种跳转push和replace对比区别
router.push(location) 在vue.js中想要跳转到不同的 URL,需要使用 router.push 方法. 这个方法会向 history 栈添加一个新的记录,当用户点击浏览器后退按 ...
- spring下应用@Resource, @Autowired 和 @Inject注解进行依赖注入的差异
为了探寻 '@Resource', '@Autowired', 和'@Inject'如何解决依赖注入中的问题,我创建了一个"Party"接口,和它的两个实现类"Perso ...
- 洛谷P2196 挖地雷(dp)
题意 题目链接 Sol 早年NOIP的题锅好多啊.. 这题连有向边还是无向边都没说(害的我wa了一遍) 直接\(f[i]\)表示到第\(i\)个点的贡献 转移的时候枚举从哪个点转移而来 然后我就用一个 ...
- 1003. 猜数游戏 (Standard IO)
题目描述 有一个“就是它”的猜数游戏,步骤如下:请你对任意输入的一个三位数x,在这三位数后重复一遍,得到一个六位数,467-->467467.把这个数连续除以7.11.13,输出最后的商. 输入 ...
- CSS 3动画
CSS 3在原来的基础上新增了变形和动画相关的属性,通过这些属性可以实现以前需要大段JavaScript才能实现的功能.css 3的变形功能可以对HTML元素执行位移.旋转.缩放.倾斜4种几何变换,借 ...
- Python代码 变量None的使用
代码中经常会有变量是否为None的判断,有三种主要的写法: 第一种是'if x is None': 第二种是 'if not x:': 第三种是'if not x is None'(这句这样理解更清晰 ...