idea上MyBatis第一个例子
接着上面创建的maven项目来。
1.java目录下创建cn.happy.entity包
2.idea下创建数据库连接
配置连接参数
3.把数据库表变成实体类
导入成功,改一下包名就可以用了
4.新建cn.happy.dao包,在下面新建IUserDAO接口,代码如下
package cn.happy.dao; import cn.happy.entity.Smbms_user; import java.util.List; public interface IUserDAO {
List<Smbms_user> findAll();
}
5.在IUserDAO同包下新建IUserDAO.xml文件(俗称小配置),文件名一定要相同(这样做可以规避后面的一些问题)。
官方文档中找到
2.1.4 Exploring Mapped SQL Statements
把下面的文档直接粘贴到IUserDAO.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="org.mybatis.example.BlogMapper">
<select id="selectBlog" parameterType="int" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
修改包名和<mapper>节点,比如我的代码修改如下即可
<?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="cn.happy.dao.IUserDAO">
<!--大配置中settings autoMappingBehavior NONE,所以数据库只会装配以下column-->
<resultMap id="UserMapper" type="cn.happy.entity.Smbms_user">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="userpassword" column="userpassword"/>
</resultMap>
<!--id要与接口中的方法名相同-->
<select id="findAll" resultMap="UserMapper">
select * from smbms_user
</select>
</mapper>
6.配置resources
这里需要配置三个文件
1.jdbc.properties
2.log4j.properties
3.mybatis-config.xml
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///t14_smbms?characterEncoding=utf8&useSSL=true
jdbc.username=root
jdbc.password=root
log4j.properties
log4j.rootLogger=debug,stdout,file
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{}:%L - %m%n ### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:\\logs\\log.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{}:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ### log4j.logger.cn.happy.dao=debug, stdout,file
mybatis-config.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>
<!--引入 jdbc.properties-->
<properties resource="jdbc.properties"/>
<settings>
<setting name="logImpl" value="LOG4J"/>
<setting name="autoMappingBehavior" value="NONE"/>
</settings>
<!--别名,这里不使用别名,一律使用全限定名-->
<!--<typeAliases>
<package name="cn.happy.entity"/>
</typeAliases>-->
<!--DB connection info,配置mybatis多套运行环境-->
<environments default="development">
<environment id="development">
<!--采用jdbc事务管理-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--大配置关联小配置-->
<mappers>
<!--关联单个小配置,不能重复关联-->
<mapper resource="cn/happy/dao/IUserDAO.xml"/>
<!--关联整个包,dao层接口名字和对应的xml名字要一样-->
<!--<package name="cn.happy.dao"/>-->
</mappers>
</configuration>
7.编写MyBatisUtil类
package cn.happy.util; 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 java.io.IOException;
import java.io.InputStream; public class MyBatisUtil {
private static InputStream is;
private static SqlSessionFactory sqlSessionFactory;
static {
try {
is=Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory= new SqlSessionFactoryBuilder().build(is);
}
private MyBatisUtil(){}
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
}
8.创建测试类
代码:
package cn.happy.test; import cn.happy.dao.IUserDAO;
import cn.happy.entity.Smbms_user;
import cn.happy.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import java.util.List; public class Test20170916 {
@Test
public void findAll(){
SqlSession session = MyBatisUtil.getSession();
IUserDAO mapper = session.getMapper(IUserDAO.class);
List<Smbms_user> users = mapper.findAll();
for (Smbms_user user:users
) {
System.out.println(user.getId()+"\t"+user.getUsername()+"\t"+user.getUserpassword());
}
}
}
运行结果:
idea上MyBatis第一个例子的更多相关文章
- 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s
1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2 spring-mv ...
- ElasticSearch 5学习(5)——第一个例子(很实用)
想要知道ElasticSearch是如何使用的,最快的方式就是通过一个简单的例子,第一个例子将会包括基本概念如索引.搜索.和聚合等,需求是关于公司管理员工的一些业务. 员工文档索引 业务首先需要存储员 ...
- MXNet学习~第一个例子~跑MNIST
反正基本上是给自己看的,直接贴写过注释后的代码,可能有的地方理解不对,你多担待,看到了也提出来(基本上对未来的自己说的),三层跑到了97%,毕竟是第一个例子,主要就是用来理解MXNet怎么使用. #导 ...
- emberjs学习一(环境和第一个例子)
code { margin: 0; padding: 0; white-space: pre; border: none; background: transparent; } code, pre t ...
- 键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试
键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试 完整源代码 /// /// @file ctrl2cap.c /// @author wowocock /// @date 2009-1 ...
- Mybatis第一天(其他)
Mybatis第一天 框架课程 课程计划 第一天: Mybatis的介绍 Mybatis的入门 使用jdbc操作数据库存在的问题 Mybatis的架构 Mybatis的入门程序 Dao的开发方法 原始 ...
- 小飞淙在博客上的第一天——NOIP201505转圈游戏
原本我是在word文档上写这种东西的,在杨老师的“强迫”下,我开始写了博客. 这是我在博客上的第一天,就先来个简单的,下面请看题: 试题描述 有n个小伙伴(编号从0到n-1)围坐一圈玩游戏.按照顺时 ...
- springmvc的介绍和第一个例子
SpringMVC是Spring 框架自带的一部分. SpringMVC底层基于:Servlet Struts2底层基于:filter struts1底层基于:Servlet spring 各模块 我 ...
- Informatica_(2)第一个例子
PowerCenter Repository Manager1.启动客户端程序连接服务器打开客户端(PowerCenter Repository Manager)PCRM;存储库--配置域--添加新域 ...
随机推荐
- WPF里的一些Effect特效
原文:WPF里的一些Effect特效 Blend的特效都在Microsoft.Expression.Media.Effects里,用之前添加一下引用. 可以在前台选中对象后直接点击Effect新建一种 ...
- boost库交叉编译(Linux生成ARM的库)
1. 环境: Linux系统:Ubuntu 14.04 编译工具:arm-fsl-linux-gnueabi-gcc 2.下载boost源码: 地址:https://sourceforge.net/p ...
- WPF - 资源收集
原文:WPF - 资源收集 OpenExpressApp的UI现在是使用WPF,所以熟悉WPF是必须的,以下我将可能用到的一些相关内容随时记录下来,以备查阅.此篇文章将不断更新,感兴趣的可以看看,也欢 ...
- Emgu-WPF 激光雷达研究-移动物体检测
原文:Emgu-WPF 激光雷达研究-移动物体检测 接上篇: https://blog.csdn.net/u013224722/article/details/80738619 先pose出效果图,下 ...
- WPF 用代码增加路由事件的方法
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- js 操作样式
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- delphi dom动态创建节点方法
在一次测试demo中 需要动态的创建xml节点并添加,实现方法如下: var NewItem:IXMLDOMElement; NewItem:=ConfigDoc.createElement('ite ...
- VMNET 工作站
nattunnel 快速连接内网电脑 内网穿透.内网映射,支持微信小程序本地开发 支持WEB.远程桌面.多种TCP协议 官方主页:http://www.vmnet.cc 用途 一个可以快速连接局域网中 ...
- Medical Image Report论文合辑
Learning to Read Chest X-Rays:Recurrent Neural Cascade Model for Automated Image Annotation (CVPR 20 ...
- 芒果TV For Windows10 成长历史 & 迭代历史 & 新闻报道
芒果TV 是国内领先的基于Windows10操作系统并支持Windows10全系列设备的视频应用和内容服务商. Win10商店版<芒果TV>是湖南快乐阳光互动娱乐传媒有限公司专门为Wind ...