技术标签: 框架篇 持久层 玩转MyBatis系列教程 Mybatis教程 dao层
下载地址:
https://github.com/mybatis/mybatis-3
https://oss.sonatype.org/content/repositories/snapshots/org/mybatis/mybatis/
lib:依赖包
mybatis-3.4.6.jar:mybatis核心jar包
mybatis-3.4.6.pdf:mybatis文档
/*Tablestructure for table `user` */
DROPTABLE IF EXISTS `user`;
CREATETABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) COLLATE utf8_bin DEFAULTNULL,
`password` varchar(20) COLLATE utf8_binDEFAULT NULL,
`age` int(3) DEFAULT NULL,
`address` varchar(20) COLLATE utf8_binDEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--插入数据
INSERTINTO USER(NAME,PASSWORD,age,address) VALUES('zhangsan','123456',18,'成都');
INSERTINTO USER(NAME,PASSWORD,age,address) VALUES('lisi','123456',28,'贵州');
INSERTINTO USER(NAME,PASSWORD,age,address) VALUES('wangwu','123456',38,'北京');
mybatis-3.4.6.jar:mybatis核心包
mysql-connector-java-5.1.7-bin.jar:MySQL驱动包
在想src路径下新mybais核心配置文件SqlMapConfig.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">
<!-- mybatis核心配置 -->
<configuration>
<!-- 数据库相关配置 -->
<environments default="development">
<environment id="development">
<!-- 声明事务类型 -->
<transactionManager type="JDBC"/>
<!-- 连接数据库核心配置-->
<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="1234" />
</dataSource>
</environment>
</environments>
</configuration>
新建包:com.itcodeschool.domain
新建类:User.java
package com.itcodeschool.domain;
publicclass User {
privateintid;
private String name;
private String password;
privateintage;
private String address;
}
//省略get/set/toString方法
新建包:com.itcodeschool.mapper
新建文件: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">
<!-- 命名空间,但名字必须保证唯一 -->
<mapper namespace="UserMapper">
<!-- id:设置唯一值,resultType 配置返回值类型为User-->
<select id="findUser"resultType="com.itcodeschool.domain.User">
<!-- 编写 SQL 语句 -->
SELECT *FROM User
</select>
</mapper>
在SqlMapConfig.xml文件末尾加上即可
<!-- 加载UserMapper映射文件 -->
<mappers>
<mapper resource="com/itcodeschool/mapper/UserMapper.xml"/>
</mappers>
新建包:com.itcodeschool.test
新建测试类:test.java
package com.itcodeschool.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.tomcat.util.collections.SynchronizedStack;
import com.itcodeschool.domain.User;
publicclass UserTest {
publicstaticvoid main(String[] args) {
//1、读取配mybatis核心置文件,转换为输入流
String resource = "SqlMapConfig.xml";
InputStream in = null;
try {
in = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
//2、根据mybatis核心配置文件输入流构建一个session工厂,SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
//3、根据SqlSessionFactory对象开启一个会话:SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
List<User> list = sqlSession.selectList("UserMapper.findUser");
System.out.println("总数量:"+list.size());
for(User user : list) {
System.out.println(user);
}
//释放资源
sqlSession.close();
}
}
项目完整目录如下:
加入jar包
在mybatis-3.4.6\lib目录下找到log4j-1.2.17.jar、slf4j-log4j12-1.7.25.jar加入到项目中
在src目录系新建log4j配置文件,log4j.properties
##########Set Log Levels###############
log4j.rootLogger = DEBUG,console
######### Output to console ####################
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %d{ABSOLUTE}%5p%c{ 1:%L-%m%n
重新运行UserTest.java类
如下图,可以看到更多日志信息
输出更多的日信息有利于查看程序运行过程和排查错误
C语言动态分配数组函数动态分配空间函数名参数及返回类型注意事项mallocvoid *malloc(size_t size)1. void *为常指针 2. 不要忘记空字符的空间 malloc(n+## 标题1) 3.未进行初始化callocvoid *calloc(sizet nmemb,size size)1.为分配的空间初始化成0 2.不是很常用,多用于结构体rellocvoid *relloc(void *ptr,size_t size)1
随着互联网的兴起,人们的衣食住行都离不开网络,信息与数据的价值及其安全的重要性越来越凸显。人们对于在网络中留存私密信息,从原来的无所畏惧变得如履薄冰,一个“不小心”就可能让这些敏感信息处于裸奔状态,如被不法分子获取、利用,造成的后果将不堪设想。为了营造健康和谐的社会风气,打造清朗的网络空间环境,如何有效防护、安全存储私密及敏感信息,成为备受关注的热门话题,也是网络安全工作中必不可少的重要环节。敏感...
目录一、Azkaban概论1.1 为什么需要工作流调度系统1.2 常见工作流调度系统1.3 Azkaban 与 Oozie 对比二、Azkaban集群安装2.1 集群模式安装2.1.1 安装包准备2.1.2 配置 MySQL2.1.3 配置 Executor Server2.1.4 配置 Web Server2.2 Work Flow 案例2.2.1 HelloWorld2.2.2 作业依赖案例2.2.3 自动失败重试案例2.2.4 手动失败重试案例三、Azkaban进阶3.1 JavaProcess 作
------------------------------------------------------------------------------
点击上方[全栈开发者社区]→右上角[...]→[设为星标]作者:blog.csdn.net/chenleixing/article/details/44994571最近在忙着优化集团公...
Twitter 的 snowflake 在分布式生成唯一 UUID 应用还是蛮广泛的,基于 snowflake 的一些变种的算法网上也有不少。使用 snowflake 生成 UUID 很多都是在分布式场景下使用,我看了下网上有其中有几篇 PHP 实现的都没有考虑到线程安全。现在 PHP 有了 Swoole 的锁和协程的加持,对于我们开发线程安全和高并发模拟还是很方便的,这里用 PHP 结合 Swo...
文末附源码利用非常基础的Python知识,加上Flask框架的基础应用,以及各种各样的插件,编写的非常简单的在线编辑器,你也可以实现~~
复合选择器-后代选择器(HTML、CSS)<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>复合选择器-后代选择器</title> <style>
无损音乐解压后Hash码不一样?前面提到,无损音乐之所以无损,是因为不会对音频数据进行更改。但是有的朋友发现,把某个Wav文件压缩成为无损音频,然后再转回Wav文件,Hash码竟会不一样,这是否意味着无损压缩造成了音质损失?其实并非如此。为什么Wav文件Hash码会不一样?一些无损音乐转码器在压缩音频的时候,会在音频文件加入额外的metadata信息。这部分metadata信息往往是用来储存音乐的...
这些是启动时会出的常见问题解决办法:[[email protected] elasticsearch]# vim /etc/sysctl.conf在文件末尾追加:vm.max_map_count=655360保存后执行[[email protected] elasticsearch]# sysctl -p解决办法:[[email protected] elasticsearch]# vim /etc/security/limits.conf65535修改为65536soft nofile 65536hard nofi
题目链接:传送门题意:给你n个数,以及修改的区间长度,每次修改区间中的加1,求最后所有数相同,最少的操作数。代码如下:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e5+5;int n,K;ll A[maxn],sumA[maxn],addA[maxn];ll check(ll upper){ int i; ll sum,tmp,ret; .
【实例简介】Unity Android接入微信SDK登陆,分享,支付功能。eclipse工程,进去只要替换成你的包名打出jar和res,bin,manifest就可以直接用。【实例截图】【核心代码】UnityPay2└── UnityPay2├── AndroidManifest.xml├── bin│ ├── AndroidManifest.xml│ ├── classes│ │...