【Mybatis】mybatis开启Log4j日志、增删改查操作
Mybatis日志(最常用的Log4j)
官方网站http://www.mybatis.org/mybatis-3/zh/logging.html
1.在src目录下创建一个log4j.properties文件
文件内容:
# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...需要修改下面的一行
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# 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
修改第四行:
log4j.logger.自己程序的包名=TRACE
例如log4j.logger.com.blb=TRACE
**Mybatis增删改查
dao层接口
public interface UserDao {
/**
* 查询所有用户
* @return
*/
List<User> getUsers();
/**
* 添加用户
* @return
*/
void addUser(User user);
/**
* 删除用户
* @return
*/
void delUserById(int id);
void updateUserName(@Param("after") String after, @Param("id")int id);
}
映射配置文件
<?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">
<mapper namespace="com.blb.dao.UserDao">
<select id="getUsers" resultType="com.blb.bean.User">
select * from userinfo
</select>
<insert id="addUser" >
INSERT INTO userinfo VALUES(null ,#{username},#{userpwd},#{typeid},#{userstatus})
</insert>
<delete id="delUserById">
DELETE FROM userinfo WHERE userid=#{id}
</delete>
<update id="updateUserName">
UPDATE userinfo SET username=#{after} WHERE userid=#{id};
</update>
</mapper>
使用注解的方式来映射
使用注解的方式,就不用在xml中写
<select id="getUsers" resultType="com.blb.bean.User">
select * from userinfo
</select>
这样的语句了,非常方便,但是,复杂的SQL语句写在xml文件里方便维护!
使用注解,非常简单
public interface UserDao {
/**
* 查询所有用户
* @return
*/
@Select("select * from userinfo")
List<User> getUsers();
/**
* 添加用户
* @return
*/
@Insert("INSERT INTO userinfo VALUES(null ,#{username},#{userpwd},#{typeid},#{userstatus})")
void addUser(User user);
/**
* 删除用户
* @return
*/
@Delete("DELETE FROM userinfo WHERE userid=#{id}")
void delUserById(int id);
@Update("UPDATE userinfo SET username=#{after} WHERE userid=#{id};")
void updateUserName(@Param("after") String after, @Param("id")int id);
}
答疑
@Update("UPDATE userinfo SET username=#{after} WHERE userid=#{id};")
void updateUserName(@Param("after") String after, @Param("id")int id);
写这种参数的时候要取别名@Param("别名"),不然获取不到参数报错
【Mybatis】mybatis开启Log4j日志、增删改查操作的更多相关文章
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-2.使用Mybatis注解开发视频列表增删改查
笔记 2.使用Mybatis注解开发视频列表增删改查 讲解:使用Mybatis3.x注解方式 增删改查实操, 控制台打印sql语句 1.控制台打印sql语句 ...
- MyBatis之二:简单增删改查
这一篇在上一篇的基础上简单讲解如何进行增删改查操作. 一.在mybatis的配置文件conf.xml中注册xml与注解映射 <!-- 注册映射文件 --> <mappers> ...
- SpringBoot+Mybatis+Maven+MySQL逆向工程实现增删改查
SpringBoot+Mybatis+MySQL+MAVEN逆向工程实现增删改查 这两天简单学习了下SpringBoot,发现这玩意配置起来是真的方便,相比于SpringMVC+Spring的配置简直 ...
- MyBatis批量增删改查操作
前文我们介绍了MyBatis基本的增删该查操作,本文介绍批量的增删改查操作.前文地址:http://blog.csdn.net/mahoking/article/details/43673741 ...
- MyBatis学习之简单增删改查操作、MyBatis存储过程、MyBatis分页、MyBatis一对一、MyBatis一对多
一.用到的实体类如下: Student.java package com.company.entity; import java.io.Serializable; import java.util.D ...
- 学习MyBatis必知必会(5)~了解myBatis的作用域和生命周期并抽取工具类MyBatisUtil、mybatis执行增删改查操作
一.了解myBatis的作用域和生命周期[错误的使用会导致非常严重的并发问题] (1)SqlSessionFactoryBuilder [ 作用:仅仅是用来创建SqlSessionFactory,作用 ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- Android SQLite 数据库 增删改查操作
Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...
- python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)
一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...
- MySQL数据库的权限问题操作及基本增删改查操作
前面我们讲了mysql的基本内容,现在我们详细的了解一下mysql中的具体操作. what's the SQl SQL(Structured Query Language 即结构化查询语言) SQL语 ...
随机推荐
- POI问题总结,关于数字级联及多级级联(三级以上)
目录 最近公司业务需要用到excel,并且要导出模板,今天为止所有的功能都已经实现了,在这里对出现的一些问题做一个总结. 效果图: 这是一个五级联动的数据,其中第一列是数字开头,实现了五级联动 问题1 ...
- README.md编写
一.标题写法: 第一种方法: 1.在文本下面加上 等于号 = ,那么上方的文本就变成了大标题.等于号的个数无限制,但一定要大于0个哦.. 2.在文本下面加上 下划线 - ,那么上方的文本就变成了中标题 ...
- layui的layer.msg,form提交
layer.msg('提示文字',{shift:1,time:2000},function(){ location.reload();});其中shift是提示框的动画样式,-1为无动画form.on ...
- vue父子组件之间相互传值
1. 子组件使用父组件方法,并向父组件传值 子组件代码 <template> <div class="menu"> <div class=" ...
- @vue/cli 4.0.5 学习记录
1. Vue CLI (@vue/cli) 是一个全局安装的 npm 包,提供了终端里的 vue 命令.Vue CLI 插件的名字以 @vue/cli-plugin- (内建插件) 或 vue-cli ...
- 如何使用Postman生成不同格式测试的报告
Postman还可以生成测试报告,还是多种格式报告? Postman团队开源Newman作为Postman运营工具,该开源库使用命令行方式执行Postman 脚本,并且生成多种格式报告,还支持Post ...
- 数据结构----栈stack
栈的概念与数据结构 栈(有时称为“后进先出栈”)是一个元素的有序集合,其中添加移除新元素总发生在同一端.这一端通常称为“顶部”.与顶部对应的端称为“底部”.栈的底部很重要,因为在栈中靠近底部的元素是存 ...
- utf8mb4复杂昵称问题
wechat_ling wl_channel_consumer nickname wl_consumer nickname alter table wl_channel_consumer modify ...
- Alink漫谈(四) : 模型的来龙去脉
Alink漫谈(四) : 模型的来龙去脉 目录 Alink漫谈(四) : 模型的来龙去脉 0x00 摘要 0x01 模型 1.1 模型包含内容 1.2 Alink的模型文件 0x02 流程图 0x03 ...
- Ubuntu下配置Hyperledger Fabric环境
在win10系统的台式机上安装配置Hyperledger Fabric环境 安装Ubuntu 16.04 双系统 镜像下载地址:https://www.ubuntu.com/download/desk ...