1.mybatis01:
db.properties:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=root
log4j.properties:
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.org.apache.ibatis=DEBUG
#log4j.rootLogger=warn,appender1
#log4j.appender.appender1=org.apache.log4j.ConsoleAppender
#log4j.appender.appender1.layout=org.apache.log4j.SimpleLayout
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> <!-- 加载属性文件 -->
<properties resource="db.properties"/>
<environments default="development">
<environment id="development"> <!-- 使用jdbc中的事务 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource> </environment>
</environments> <mappers>
<mapper resource="cn/zzsxt/entity/TbUser.xml"/>
</mappers>
</configuration>
TbUserDao.java:
package cn.zzsxt.dao; import java.util.List; import cn.zzsxt.entity.TbUser; public interface TbUserDao {
public List<TbUser> findAll();
public TbUser findUserById(Long id);
public int addUser(TbUser user);
public int updateUser(TbUser user);
public int deleteUser(long id);
}
TbUserDaoImpl.java:
package cn.zzsxt.dao.impl; import java.io.InputStream;
import java.util.List; import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import cn.zzsxt.dao.TbUserDao;
import cn.zzsxt.entity.TbUser; public class TbUserDaoImpl implements TbUserDao { @Override
public List<TbUser> findAll() {
//加载全局配置文件
InputStream ips = this.getClass().getResourceAsStream("/mybatis-config.xml");
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(ips);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行查询
List<TbUser> list = sqlSession.selectList("user.findAll");//参数为映射文件中的statment id
//释放资源
sqlSession.close();
return list;
} @Override
public TbUser findUserById(Long id) {
//加载全局配置文件
InputStream ips = this.getClass().getResourceAsStream("/mybatis-config.xml");
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(ips);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行查询
TbUser user = sqlSession.selectOne("user.findUserById",id);
sqlSession.close();
return user;
} @Override
public int addUser(TbUser user) {
//加载全局配置文件
InputStream ips = this.getClass().getResourceAsStream("/mybatis-config.xml");
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(ips);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行查询
int count = sqlSession.insert("user.addUser", user);
//提交事务
sqlSession.commit();
// sqlSession.rollback();//回滚事务
sqlSession.close();
return count;
} @Override
public int updateUser(TbUser user) {
//加载全局配置文件
InputStream ips = this.getClass().getResourceAsStream("/mybatis-config.xml");
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(ips);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行查询
int count = sqlSession.update("user.updateUser", user);
//提交事务
sqlSession.commit();
sqlSession.close();
return count;
} @Override
public int deleteUser(long id) {
//加载全局配置文件
InputStream ips = this.getClass().getResourceAsStream("/mybatis-config.xml");
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(ips);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//执行查询
int count = sqlSession.update("user.deleteUser", id);
//提交事务
sqlSession.commit();
sqlSession.close();
return count;
} }
TbUser.java:
package cn.zzsxt.entity; import java.io.Serializable;
import java.util.Date; public class TbUser implements Serializable{
private long id;
private String username;
private String sex;
private Date birthday;
private String address; public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "TbUser [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address="
+ address + "]";
} }
TbUser.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">
<!--
1.User.xml(原始ibatis命名),mapper代理开发的映射文件命名XxxMapper.xml
2.namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
3.注意:使用mapper代理开发,namespace有特殊的作用
-->
<mapper namespace="user">
<!--在映射文件中配置很多sql语句-->
<!--需求:通过id查询用户表的记录-->
<!--
1.标识映射文件中的sql,将sql语句封装到mapped statement对象中,所以称为statement的id
2.parameterType:指定输入参数类型
3.#{}:表示一个占位符
4.#{id}:其中的id表示接收的输入参数,参数名称就是id,如果输入参数是简单类型,#{}中的参数名可以任意,可以为value或者其他
5.resultType:指定sql输出结果的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象
-->
<!-- 查询 -->
<select id="findAll" resultType="cn.zzsxt.entity.TbUser">
select * from tb_user
</select> <select id="findUserById" parameterType="java.lang.Long" resultType="cn.zzsxt.entity.TbUser">
select * from tb_user where id=#{id}
</select> <!-- 添加 -->
<insert id="addUser" parameterType="cn.zzsxt.entity.TbUser">
insert into tb_user(username,sex,birthday,address) values(#{username},#{sex},#{birthday},#{address})
</insert> <!-- 修改 -->
<update id="updateUser" parameterType="cn.zzsxt.entity.TbUser">
update tb_user set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address} where id=#{id}
</update> <!-- 删除 -->
<delete id="deleteUser" parameterType="java.lang.Long">
delete from tb_user where id=#{id}
</delete>
</mapper>
Test1.java:
package cn.zzsxt.demo; import java.util.Date;
import java.util.List; import org.junit.Test; import cn.zzsxt.dao.TbUserDao;
import cn.zzsxt.dao.impl.TbUserDaoImpl;
import cn.zzsxt.entity.TbUser; public class Test1 { @Test
public void testFindAll(){
TbUserDao tbUserDao = new TbUserDaoImpl();
List<TbUser> list = tbUserDao.findAll();
for (TbUser tbUser : list) {
System.out.println(tbUser);
}
} @Test
public void testFindUserById(){
TbUserDao tbUserDao = new TbUserDaoImpl();
TbUser user = tbUserDao.findUserById(new Long(1));
System.out.println(user);
} @Test
public void testAddUser(){
TbUserDao tbUserDao = new TbUserDaoImpl();
TbUser user = new TbUser();
user.setUsername("test");
user.setSex("男");
user.setBirthday(new Date());
user.setAddress("北京");
int count = tbUserDao.addUser(user);
System.out.println(count);
} @Test
public void testUpdateUser(){
TbUserDao tbUserDao = new TbUserDaoImpl();
TbUser user = tbUserDao.findUserById(4L);
user.setUsername("王五");
int count =tbUserDao.updateUser(user);
System.out.println(count);
} @Test
public void testDeleteUser(){
TbUserDao tbUserDao = new TbUserDaoImpl();
int count =tbUserDao.deleteUser(4L);
System.out.println(count);
}
}
TestLog4J.java:
package cn.zzsxt.test; import org.apache.log4j.Logger;
import org.junit.Test; public class TestLog4J { Logger logger = Logger.getLogger(TestLog4J.class.getName());
@Test
public void test01(){
// System.out.println("xxxx");
logger.debug("debug....");
logger.info("info....");
logger.warn("warn....");
logger.error("error....");
logger.fatal("fatal....");
} public static void main(String[] args) {
TestLog4J test = new TestLog4J();
test.test01();
} }
java:Mybatis框架1(基本配置,log4j,Junit4(单元测试))的更多相关文章
-
Java日志框架:SLF4J,Common-Logging,Log4J,Logback说明
Log4j Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守护进程等 ...
-
深入理解MyBatis框架的的配置信息
面对一个框架,最重要的不是说回用其代码就可以了,我们需要了解其思想,这样才能更快更好的掌握这个框架.而对于一个框架,最重要的就是其配置文件的作用及功能了.下面,我就来谈一谈我今天遇到的这个MyBati ...
-
MyBatis框架的文件配置
第一步:log4j.properties的配置 原因:Mybatis的日志输出是依赖与log4j的,所以必须要配置 # Global logging configuration log4j.rootL ...
-
Java 日志框架概述(slf4j / log4j / JUL / Common-logging(JCL) / logback)
一.简介 JAVA日志在初期可能官方并没有提供很好且实用的规范,导致各公司或OSS作者选择自行造*,这也导致了目前初学者觉得市面上 Java 日志库繁杂的局面. 现在市面流行以 slf4j(Simp ...
-
Java Mybatis 框架入门教程
一.Mybatis介绍 MyBatis是一款一流的支持自定义SQL.存储过程和高级映射的持久化框架.MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去 设置参数和获取检索结果.MyBati ...
-
Java日志框架(Commons-logging,SLF4j,Log4j,Logback)
简介 在系统开发中,日志是很重要的一个环节,日志写得好对于我们开发调试,线上问题追踪等都有很大的帮助.但记日志并不是简单的输出信息,需要考虑很多问题,比如日志输出的速度,日志输出对于系统内存,CPU的 ...
-
MyBatis框架的基本配置
MyBatis的基本配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE config ...
-
《Java Spring框架》SpringXML配置详解
Spring框架作为Bean的管理容器,其最经典最基础的Bean配置方式就是纯XML配置,这样做使得结构清晰明了,适合大型项目使用.Spring的XML配置虽然很繁琐,而且存在简洁的注解方式,但读懂X ...
-
Mybatis框架的简单配置
Mybatis 的配置 1.创建项目(当然,这是废话) 2.导包 下载mybatis-3.2.0版:https://repo1.maven.org/maven2/org/mybatis/mybatis ...
-
mybatis框架的核心配置Mapper.xml
映射管理器resultMap:映射管理器,是Mybatis中最强大的工具,使用其可以进行实体类之间的关系,并管理结果和实体类间的映射关系 需要配置的属性:<resultMap id=" ...
随机推荐
-
ArcEngine数据删除几种方法和性能比较[转]
四个解决方案: 1.IFeatureCursor 游标查询后,遍历删除 2.更新游标删除IFeatureCursor.DeleteFeature() 3.ITable.DeleteSearchedRo ...
-
使用Git的Push出现rejected - non-fast-forward错误
通过查阅资料,发现是文件冲突问题,即本地和远程的Repository中的文件出现了冲突所致,重新检查了一下,发现是在建立Repository时,添加了ReadMe.txt文件,导致和本地得项目分支不一 ...
-
Django1.8教程——从零开始搭建一个完整django博客(三)
这一节主要介绍对数据库的访问操作:通过管理器(manage),对对象进行检索.修改.删除等操作,详细介绍了如何针对不同的模型自定义管理器. 查询和管理工作 现在,我们已经有了一个功能完善的Django ...
-
BlueStacks 设置代理服务器 Proxifier指定任意程序的代理服务器
详见地址: http://www.ccproxy.com/proxifier-tou-ming-dai-li.htm BlueStacks如何使用代理服务器 http://www.360doc.com ...
-
showdialog窗体不在任务栏显示的问题处理
场景: c#开发的windows窗体用showdialog弹出时,在任务栏中 win7系统显示,win xp和win 2003却不显示. 窗体的ShowInTaskbar已设置为True. 解决: 在 ...
-
[ActionScript 3.0] AS3实现图像径向转旋效果
原图 效果 import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Blen ...
-
列表的实现-----数据结构与算法JavaScript描述 第三章
实现一个列表 script var booklist = new List(); booklist.append('jsbook'); booklist.append('cssbook'); book ...
-
高级UIKit-10(UDPSocket)
[day1201_UDPSocket]:utpsocket的使用 使用UDP网络传输,是一种无连接的传输协议,不安全,一般使用在监控视频中或QQ聊天中,该网络传输就向广播传播模式,一对多. 在ios中 ...
-
shell中的readonly
readonly用来定义只读变量,一旦使用readonly定义的变量在脚本中就不能更改 测试脚本 #!/bin/sh readonly a='haha' echo a a='xixi' //更改变量的 ...
-
Excel转datatable
如果想支持 .xls,.xlsx 两种格式 则必须安装一个exe文件,下载路径https://www.microsoft.com/zh-CN/download/details.aspx?id=1325 ...