Mybatis入门之增删改查
Mybatis入门之增删改查
Mybatis如果操作成功,但是数据库没有更新那就是得添加事务了。(增删改都要添加)-----
浪费了我40多分钟怀疑人生后来去百度。。。
导入包:
引入配置文件:
sqlMapConfig.xml(mybatis的核心配置文件)、log4j.properties(日志记录文件)
<?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>
<!-- 和Spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments> <!-- 加载映射文件 -->
<mappers>
<mapper resource="deep/sqlmap/Account.xml"/>
</mappers>
</configuration>
#Global logging configuration
log4j.rootLogger=DEBUG,stdout
#Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p[%t]-%m%n
数据库准备:(略)
实体类编写后针对实体类编写的映射文件
<?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:命名空间,用于隔离sql -->
<mapper namespace="account">
<!-- 通过ID查询一个用户 -->
<!-- parameterType入参的类型,resultType返回值的类型 -->
<!-- #{v} 参数占位符 -->
<select id="findUserById" parameterType="Integer" resultType="deep.pojo.Account">
select * from account where id = #{v}
</select> <!--
#{} 占位符
${} 字符串拼接
-->
<!-- 根据用户名模糊查询用户列表 -->
<select id="findUserByUsername" parameterType="String" resultType="deep.pojo.Account">
<!-- 这种方式不防止sql注入 -->
<!-- select * from account where username like '%${value}%' -->
select * from account where username like "%"#{v}"%"
</select> <!-- 添加用户 -->
<insert id="insertUser" parameterType="deep.pojo.Account">
<!-- 在查询结束后查询最新插入的id,并返回给对象,赋值给对象的id属性 -->
<selectKey keyProperty="id" resultType="Integer" order="AFTER">
select LAST_INSERT_ID()
</selectKey>
insert into account (username,birthday,address,sex)
value (#{username},#{birthday},#{address},#{sex})
</insert> <!-- 更新 -->
<update id="updateUserById" parameterType="deep.pojo.Account">
update account
set username = #{username},sex = #{sex},birthday = #{birthday},address = #{address}
where id = #{id}
</update> <!-- 删除 -->
<delete id="deleteUserById" parameterType="Integer">
delete from account
where id = #{v}
</delete> </mapper>
执行
package deep.junit; import java.io.InputStream;
import java.util.Date;
import java.util.List; 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 deep.pojo.Account; public class MyBatisFirstTest { @Test
public void testMybatis() throws Exception {
//加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(); //执行sql语句
Account account = sqlSession.selectOne("account.findUserById", 1); System.out.println(account);
} //根据用户名称模糊查询用户列表
@Test
public void testFindUserByUsername() throws Exception{
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource); //创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); //创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(); //执行sql语句
List<Account> accounts = sqlSession.selectList("account.findUserByUsername", "五");
for (Account account : accounts) {
System.out.println(account);
}
} //根据用户名称模糊查询用户列表
@Test
public void testInsertUser() throws Exception{
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource); //创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); //创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(); //执行sql语句
Account account = new Account();
account.setUsername("麻子2");
account.setBirthday(new Date());
account.setAddress("sdfasdfads");
account.setSex("男");
int i = sqlSession.insert("account.insertUser", account); //自己手动提交事务
sqlSession.commit(); System.out.println(account.getId());
} //更新用户
@Test
public void testUpdateUserById() throws Exception{
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource); //创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); //创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(); //执行sql语句
Account account = new Account();
account.setId(28);
account.setUsername("麻子更新");
account.setBirthday(new Date());
account.setAddress("地址更新");
account.setSex("女");
int update = sqlSession.update("account.updateUserById", account); //自己手动提交事务
sqlSession.commit();
} //更新用户
@Test
public void testDelete() throws Exception{
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource); //创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in); //创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession(); sqlSession.delete("account.deleteUserById", 28); //自己手动提交事务
sqlSession.commit();
} }
Mybatis入门之增删改查的更多相关文章
- MyBatis入门2_增删改查+数据库字段和实体字段不一致情况
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 当数据库字段和实体bean中属性不一致时 之前数据库P ...
- MyBatis入门案例 增删改查
一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...
- mybatis入门(二):增删改查
mybatis的原理: 1.mybatis是一个持久层框架,是apache下的顶级项目 mybatis托管到googlecode下,目前托管到了github下面 2.mybatis可以将向prepar ...
- mybatis入门二-----增删改查
一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...
- MyBatis简单的增删改查以及简单的分页查询实现
MyBatis简单的增删改查以及简单的分页查询实现 <? xml version="1.0" encoding="UTF-8"? > <!DO ...
- MyBatis -- 对表进行增删改查(基于注解的实现)
1.MyBatis对数据库表进行增/删/改/查 前一篇使用基于XML的方式实现对数据库的增/删/改/查 以下我们来看怎么使用注解的方式实现对数据库表的增/删/改/查 1.1 首先须要定义映射sql的 ...
- Spring Boot 使用Mybatis注解开发增删改查
使用逆向工程是遇到的错误 错误描述 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): c ...
- Mybatis实现简单增删改查
Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...
- SpringMVC,MyBatis商品的增删改查
一.需求 商品的增删改查 二.工程结构 三.代码 1.Mapper层 (1) ItemsMapperCustom.java package com.tony.ssm.mapper; import ja ...
随机推荐
- 使用datagrip链接mysql数据库的报错问题.
1. datagrip刚打开时候,选择风格是白是黑后, 会有一个选择什么数据库,有oracle...一大堆,别选错了.我的是mysql,不要选成了windows sql 和sql. 2 基本设置写完, ...
- 在Linux上要安装SSH协议
学习准备:博客园.CSDN.51CTO,注意问问题去CSDN.注意还有一种就是自己搭建博客,自己搭建博客相当于写一个网站:http://pyshell.cn;github:是一个代码仓库是别人的.有些 ...
- 【转载】C++ ,C#数据类型对照
C++ C#=====================================WORD ushortDWORD uintUCH ...
- [Swift]LeetCode84. 柱状图中最大的矩形 | Largest Rectangle in Histogram
Given n non-negative integers representing the histogram's bar height where the width of each bar is ...
- [Swift]LeetCode696. 计数二进制子串 | Count Binary Substrings
Give a string s, count the number of non-empty (contiguous) substrings that have the same number of ...
- [Swift]LeetCode974. 和可被 K 整除的子数组 | Subarray Sums Divisible by K
Given an array A of integers, return the number of (contiguous, non-empty) subarrays that have a sum ...
- Build Assimp library for Android
Build Assimp library for Android 首先各路教程中有推荐使用 NDK 或者 STANDALONE TOOLCHAIN 编译的,根据我的理解,这两种方式都是可以的,如果能直 ...
- 利用Python爬去囧网福利(多线程、urllib、request)
import os; import urllib.request; import re; import threading;# 多线程 from urllib.error import URLErro ...
- jquery lazy load
LazyLoad是一个Js编写的Jq插件,它可以延迟加载页面中的图片,在浏览器可视范围中的图片会被加载.如何使用:LazyLoad依赖于Jquery,在html的结尾处 ,就是在</body&g ...
- Qt之自绘制饼图
1.说明 最近在搞绘图方面的工作,说实话C++的第三方绘图库并不算多,总之我了解的有:qtcharts.ChartDirector.qwt.kdchart和QCustomPlot.这几个库各有利弊. ...