用Mybatis实现添加用户
用Mybatis实现添加用户
码云链接:https://gitee.com/li_bolin123/day14-code_mybatis
##我这边使用测试驱动开发
(1)定义接口中的方法
(2)语句
(3)配置
(4)通过session.getMapper(),实现动态代理
具体代码目录结构
Pom.mxl文件
<dependencies><!-- junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- MySql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.32</version></dependency><!-- Mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><!--日志包--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.25</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies>
测试代码:
package com.lbl.user;import com.lbl.bean.User;
import com.lbl.dao.UserDao;
import com.lbl.utils.MySessionUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;import java.util.Date;public class UserTest {@Testpublic void test01(){//获得sessionSqlSession sqlSession = MySessionUtils.getSession();//获得mapperUserDao mapper = sqlSession.getMapper(UserDao.class);User user = new User();user.setUsername("李柏霖1");user.setAddress("郴州");user.setBirthday(new Date());user.setSex(1);mapper.addUser(user);//关闭资源sqlSession.close();}
}
MySessionUtils:
package com.lbl.utils;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream;//Session工具类
public class MySessionUtils {private static SqlSessionFactory sessionFactory;//static 静态代码,在类加载的时候执行一次,且只执行一次static{// 》1 创建SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 》2 创建SqlSessionFactory对象InputStream inputStream = MySessionUtils.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");sessionFactory = sqlSessionFactoryBuilder.build(inputStream);//加载核心配置文件 参1 输入流
// 》3 加载SqlMapConfig.xml配置文件}public static SqlSession getSession() {// 》4 创建SqlSession对象SqlSession sqlSession = sessionFactory.openSession();return sqlSession;}
}
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--dtd是对xml配置标签与属性的约束-->
<configuration><typeAliases><package name="com.lbl.bean"/></typeAliases><!-- environments环境 开发环境,生产环境--><environments default="development"><environment id="development"><!-- 使用jdbc的事务管理 --><transactionManager type="JDBC"/><!-- dataSource Mybatis自带数据源连接池--><dataSource type="POOLED"><!-- 四大信息 --><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://47.115.79.211:3307/day14?characterEncoding=utf-8"/><property name="username" value="root"/><property name="password" value="admin123"/></dataSource></environment></environments><!-- 配置多个映射文件--><mappers><mapper resource="UserMapper.xml"/></mappers>
</configuration>
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--该配置文件用来写sql-->
<!-- namespace:命名空间,用于隔离sql当我们有多个UserMapper.xml时,为了区分不同的文件,则需要指定namespace,这个值必须唯一
-->
<mapper namespace="com.lbl.dao.UserDao"><!-- 根据id来查询用户 --><!-- id:statement的id 或者叫做sql的id,后期可以用作方法名--><!-- parameterType:声明输入参数的类型 ,这个参数可以省略--><!-- resultType:声明输出结果的类型,应该填写pojo的全路径 --><!-- #{}:输入参数的占位符,相当于jdbc的? ,如果传入的是基本类型,则{}里边的内容可以随便写 --><select id="addUser" parameterType="user">INSERT INTO `user` VALUES(null,#{username},#{birthday},#{sex},#{address})</select></mapper>
log4j.properties
# 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
User
package com.lbl.bean;import java.util.Date;public class User {private int id;private String username;private Date birthday;private int sex;private String address;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public int getSex() {return sex;}public void setSex(int sex) {this.sex = sex;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", birthday=" + birthday +", sex=" + sex +", address='" + address + '\'' +'}';}
}
UserDao
package com.lbl.dao;import com.lbl.bean.User;public interface UserDao {void addUser(User user);
}
用Mybatis实现添加用户相关推荐
- MyBatis实现mysql添加用户测试失败解决方法
MyBatis添加用户单元测试没有报错,但是数据库表中数据未添加成功: 此时因为未进行事务提交导致Rolling back了,在释放资源前需要进行事务提交: sqlSession.commit();
- Mybatis添加用户返回id
问题 在添加用户时,常把一个表的id设为主键,自增,以至于再插入数据的时候,无法直接获取用户id,如果下面操作还需要用到id,那么还要通过查询来获取,浪费资源 解决方案 selectKey标 ...
- Bootstrap4+MySQL前后端综合实训-Day07-PM【用户信息管理页面——功能展示(分页显示数据、添加用户、批量删除用户、编辑用户信息)、servlet项目代码整理汇总】
[Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目 录 页面展示 分页显示数据 添加用户信息 (单个/批量)删除用户 编辑 ...
- No6-6.从零搭建spring-cloud-alibaba微服务框架,添加用户鉴权逻辑,动态数据权限(使用AOP实现)等(六,no6-6)
代码地址与接口看总目录:[学习笔记]记录冷冷-pig项目的学习过程,大概包括Authorization Server.springcloud.Mybatis Plus~~~_清晨敲代码的博客-CSDN ...
- Day3-Mybatis基本框架搭建(添加用户)
Day3-Mybatis基本框架搭建(添加用户) 二. Mybatis-JDBC Mybatis的介绍 Mybatis的入门 使用jdbc操作数据库存在的问题 (回顾jdbc) Mybatis的架构 ...
- 实习笔记 —— SSM三个框架的整合 VIII (添加用户)
系列文章目录 实习笔记 -- Spring基础 实习笔记 -- IOC反转控制(xml配置文件 + 注解) 实习笔记 -- AOP开发I 实习笔记 -- AOP开发II(AOP中Advice的类型) ...
- mybatis批量添加
接口传入集合,在mybatis里面实现批量插入 <insert id="insert" parameterType="list" >insert i ...
- Linux添加用户组和添加用户
1.用户组 添加组:groupadd 组名 [root@Server-n93yom ~]# groupadd dev [root@Server-n93yom ~]# cat /etc/group | ...
- MYSQL 创建用户1290错误_rhel6 mysql skip-grant-tables 添加用户报错 ERROR 1290
不小心把数据库密码忘掉了, 这个时候我们只需要在数据库的配置文件里面添加 skip-grant-tables 然后重新启动服务,再登录数据库就不要我们输入密码了 这个时候我成功登录数据,可是不小心又把 ...
最新文章
- java分布式+高可用_[Java复习] 分布式高可用-Hystrix
- 30行代码消费腾讯人工智能开放平台提供的自然语言处理API
- android耳机广播,Android利用广播实现耳机的线控
- sklearn分类器:朴素贝叶斯
- 数据流中的中位数java_数据流中的中位数
- python连接mysql数据库简单例子
- codeforces 645 D Robot Rapping Results Report 【树形dp】
- 迅雷极速版修改边下边播的默认播放器为PotPlayer
- PPT一次性压缩图片
- 解决win10睡眠后变卡的问题
- 数据结构与算法—前导
- 数学一年级应用题_2019年小学一年级数学应用题汇总
- JavaScript高级(三)
- 怎么做好电商运营?40份电商运营表格模板,你离优秀的运营只差了一个表格
- 文件夹无法访问如何解决?
- RFID技术在通道门禁系统的应用
- RPi.GPIO 官方使用文档翻译
- Surface Go为教育而生,微软将如何改变中国课堂?
- 微信小程序微商城(八):缓存实现商品购物车功能
- 多叉树的递归和非递归遍历
热门文章
- QSocketNotifier: Socket notifiers cannot be enabled or disabled from another
- Halcon的常见错误
- vue解决打包后文件过大的问题-使用压缩插件打包后压缩文件-compression-webpack-plugin
- 摄像头镜头焦距与照射距离关系图
- 普渡大学利用深度学习自动检测核反应堆裂缝
- 从荣耀MagicV看折叠屏手机的现状及未来发展
- dell文件服务器连接,配置DELL MD3200存储服务器连接到多台主机
- POI Word 模板 文字 图片 替换
- this is related to npm not being able to find a file
- 用python怎么读文件_python怎么读文件