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基本操 ...
随机推荐
- 送专利啦~~ .Net高阶异常处理之TopLevelEH
我们知道,.Net的应用程序运行在.net framework虚拟机上,对于在运行时发生的错误,我们有try...catch可以捕捉,实在不济,对于winform和asp.net 我们都有全局的事件可 ...
- Servlet开发(三)之ServletConfig,ServletContext
1. ServletConfig Servlet是开发动态web的技术,而web.xml是Tomcat工程中最基础也最重要的配置文件,Tomcat启动项目的时候会加载并读取这个文件,其中web.xml ...
- python7
字典-dict 字典也是一种组合数据,没有顺序的组合数据,数据以键值对的方式存在 字典的定义 1.创建空字符串 变量 = {} 或者 变量 = dict() 2 ...
- laravel验证规则
就拿laravel的登入验证来举例: 1.进入login控制器, use AuthenticatesUsers;从这里点进去找到验证规则 //验证protected function validate ...
- flask跨域
from flask import Flask from flask_cors import CORS, cross_origin app = Flask(__name__) CORS(app) @a ...
- sass(@at-root与&配合使用、without和with)
@at-root与&配合使用(找父级) scss.style css.style 应用于@keyframe scss.style css.style @at-root (without: .. ...
- Redis学习笔记(一) ---- Linux系统中部署Redis存储系统
Redis 一.Redis简介 1.Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合 ...
- JAVA基本数据类型、引用数据类型-参数传递详解
1:基本类型的参数传值 对于基本数据类型,修改这个值并不会影响作为参数传进来的那个变量,因为你修改的是方法的局部变量,是一个副本.实参的精度级别应等于或低于形参的精度级别,否则报错. class JB ...
- toasf的苦水
http://blog.csdn.net/qq_25867141/article/details/52807705 优化 上面的几种方式我大致也都走了一遍,其实我觉得都没啥区别,看你喜欢用哪种吧.我其 ...
- Python初学者第十天 集合、十六进制
10day 数据类型:集合 set 1.集合的定义 集合:无序的.不重复的数据组合. 特性:a.去重,把一个列表变成集合,就自动去重了 b.关系测试.测试两组数据之间的交集.差集.并集等关系 2.集合 ...