java之mybatis之使用mybatis实现crud操作
目录结构:
1.封装 mybatis 的工具类:
MybatisUtil.java
public class MybatisUtil {
private static SqlSessionFactory getSqlSessionFactory() throws IOException{
Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
return new SqlSessionFactoryBuilder().build(reader);
}
public static SqlSession getSqlSession() throws IOException{
//填写参数 true表示事务自动提交
return getSqlSessionFactory().openSession(true);
}
}
2.vo类
User.java
public class User implements Serializable{
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
3.映射文件
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">
<!--
namespace用来指定映射文件的命名空间,在这里通过namespace可以找到该空间下的所有的
sql语句映射。namespace的命名通常和应该映射文件所在【包名+映射文件名】
-->
<mapper namespace="cn.sxt.vo.UserMapper">
<select id="findAll" resultType="User">
select * from t_user
</select> <!-- select用来编写查询的sql语句 id在同一个namespace下是唯一的。
parameterType用来指定参数类型
#{id} 占位符 输入参数将会填充。建议和参数名要相同
resultType 用来指定返回值类型
-->
<select id="selectUser" parameterType="int" resultType="User">
select * from t_user where id = #{id}
</select>
<!-- insert用来映射插入语句
useGeneratedKeys 为true表示使用主键自增策略
parameterType用来指定参数类型
占位符中的 名称是参数的属性名,并且要提供get/set方法
-->
<insert id="insertUser" useGeneratedKeys="true" parameterType="User">
insert into t_user(name,age) values(#{name},#{age})
</insert>
<!-- delete 用来指定删除语句 -->
<delete id="deleteUser" parameterType="int">
delete from t_user where id=#{id}
</delete>
<!-- update 用来指定更新语句 -->
<update id="updateUser" parameterType="User">
update t_user set name=#{name},age=#{age} where id=#{id}
</update>
</mapper>
4.核心配置文件
mybatis.cfg.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>
<!-- 它们都是外部化,可替代的属性。可以配置在一个典型的Java 属性文件中,或者通过
properties 元素的子元素进行配置 -->
<properties resource="jdbc.properties"></properties>
<!-- 别名是一个较短的Java 类型的名称。用来设置别名 -->
<typeAliases>
<!-- 为指定的包下所有类设置别名,别名默认为类名 -->
<package name="cn.sxt.vo"/>
<!-- 为指定的类型设置别名
<typeAlias type="cn.sxt.vo.User" alias="User"/>
-->
</typeAliases>
<!-- MyBatis 能够配置多套运行环境,这有助于将您的SQL 映射到多个数据库上。例如,在您的
开发、测试、生产环境中,您可能有不同的配置。
default指向默认使用的环境
-->
<environments default="development">
<environment id="development">
<!--
JDBC – 这个配置直接使用JDBC 的提交和回滚功能。它依赖于从数据源获得连接来管理
事务的生命周期。
• MANAGED – 这个配置基本上什么都不做。它从不提交或者回滚一个连接的事务。而是让
容器(例如:Spring 或者J2EE 应用服务器)来管理事务的生命周期。
-->
<transactionManager type="JDBC" />
<!--
UNPOOLED – 这个类型的数据源实现只是在每次需要的时候简单地打开和关闭连接。
POOLED – 这个数据源的实现缓存了JDBC 连接对象,用于避免每次创建新的数据库连接时都初始
化和进行认证,加快程序响应。并发WEB 应用通常通过这种做法来获得快速响应。
JNDI – 这个数据源的配置是为了准备与像Spring 或应用服务器能够在外部或者内部配置数据
源的容器一起使用,然后在JNDI 上下文中引用它。
-->
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- sql语句的映射文件配置 -->
<mapper resource="cn/sxt/vo/UserMapper.xml"/>
</mappers>
</configuration>
jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=1111
5.测试
MybatisTest.java
public class MybatisTest {
@Test
public void testAdd() throws IOException{
User user = new User();
user.setName("刘德华");
user.setAge(55);
SqlSession session = MybatisUtil.getSqlSession();
//增 删 改 返回值为受影响的行数
session.insert("cn.sxt.vo.UserMapper.insertUser", user);
session.close();
}
@Test
public void testUpdate() throws IOException{
SqlSession session = MybatisUtil.getSqlSession();
User user=session.selectOne("cn.sxt.vo.UserMapper.selectUser", 1);
user.setName("彰五金");
session.update("cn.sxt.vo.UserMapper.updateUser",user);
session.close();
}
@Test
public void testDelete() throws IOException{
SqlSession session = MybatisUtil.getSqlSession();
session.delete("cn.sxt.vo.UserMapper.deleteUser", 3);
session.close();
}
@Test
public void testFindAll() throws IOException{
SqlSession session = MybatisUtil.getSqlSession();
List<User> list = session.selectList("cn.sxt.vo.UserMapper.findAll");
for(User u:list){
System.out.println(u);
}
session.close();
}
}
java之mybatis之使用mybatis实现crud操作的更多相关文章
- Mybatis基于代理Dao实现CRUD操作 及 Mybatis的参数深入
Mybatis基于代理Dao实现CRUD操作 使用要求: 1.持久层接口和持久层接口的映射配置必须在相同的包下 2.持久层映射配置中mapper标签的namespace属性取值必须是持久层接口的全限定 ...
- 使用MyBatis对数据库中表实现CRUD操作(二)
一.使用MyBatis对表实现CRUD操作 1.定义sql映射 userMapper.xml <?xml version="1.0" encoding="UTF-8 ...
- Mybatis学习(二) - CRUD操作(增删改查操作)
直接上例子: 1.项目结构: 2.具体代码及配置 User.java package com.mybatis.bean; public class User { private int id; pri ...
- Springboot整合Mybatis实现级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- Spring Boot整合Mybatis完成级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- MyBatis使用注解方式实现CRUD操作
一.使用注解后就不需要写SysGroupDaoMapper.xml 只需要在Dao的抽象方法前加上相应的注解就可以. package cn.mg39.ssm01.dao; import java.ut ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...
- MyBatis入门学习教程-使用MyBatis对表执行CRUD操作
上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
[转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...
随机推荐
- join的用法
var array = ['周欢', '周圆圈'] var str = array.join(' ') console.log(str) // 周欢 周圆圈 join()的括号里面的表示的是分隔符号
- [技术博客] SPRINGBOOT自定义注解
SPRINGBOOT自定义注解 在springboot中,有各种各样的注解,这些注解能够简化我们的配置,提高开发效率.一般来说,springboot提供的注解已经佷丰富了,但如果我们想针对某个特定情景 ...
- JMeter的接口测试使用
1 先创建线程组
- Behavior Trees for Path Planning (Autonomous Driving)
Behavior Trees for Path Planning (Autonomous Driving) 2019-11-13 08:16:52 Path planning in self-driv ...
- 【深入学习linux】Linux命令格式
一.命令基本格式 命令提示符 [root@localhost ~]# root 代表当前登录用户,Linux当中管理员账号是 root localhost 代表主机名 ~ 代表当前所在目录(家目录), ...
- Torch-Models 别人训练的FastNeuralStyle
This is the pink style's image: This is the triangle one: The fire ones come from this image: And th ...
- SSL证书原理讲解
一直以来都对数字证书的签发,以及信任等事情一知半解.总算有个闲适的周末来总结和深入一下相关的知识. CA: CA(Certificate Authority)是证书的签发机构,它是负责管理和签发证书的 ...
- sql server 利用存储过程http请求调用URL链接访问方法
sp_configure ; GO RECONFIGURE; GO sp_configure ; GO RECONFIGURE; GO EXEC sp_configure 'Ole Automatio ...
- 在centos7上用docker安装宝塔面板
在centos7上用docker安装宝塔面板 1. [root@web01 ~]# systemctl enable docker 2. [root@web01 ~]# docker pull c ...
- Mysql 执行效率 性能综合贴
一.or 的性能不如 in [参考]mysql in与or效率比较 二.MySQL数据库开发的三十六条军规 [参考]https://blog.csdn.net/aa_moon/article/deta ...