非Spring环境下使用Mybatis操作数据库的流程
准备工作
1, 导入mybatis-3.2.7.jar,mysql-connector-5.1.25-bin.jar两个jar包
2, 在数据库中创建一个db_test数据库,库中有一个表为user_t(id,user_name,password,age)
3, 创建User.java实体包含属性(id,username,password,age)
4, 创建jdbc.properties配置文件:内容如下(可以不创建,直接在mybatis_config.xml中的properties中添加propertiy项),用于配置数据库连接相关属性
driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://127.0.0.1:3306/db_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
jdbc_username=root
jdbc_password=
编写代码
创建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="com.liangjidong.mapper.UserMapper">
<select id="selectById" parameterType="int" resultType="User">
select id,
user_name as username,
password,
age
from user_t
where id=#{id}
</select>
</mapper>
创建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="jdbc.properties"></properties>
<!-- 创建User类的别名 -->
<typeAliases>
<typeAlias type="com.liangjidong.pojo.User" alias="User" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driverClassName}" />
<property name="url" value="${jdbc_url}" />
<property name="username" value="${jdbc_username}" />
<property name="password" value="${jdbc_password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/liangjidong/mapper/UserMapper.xml" />
</mappers>
</configuration>
创建测试程序
方式一:
String resource = "mybatis-config.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(reader);
SqlSession session = factory.openSession();
User user = session.selectOne(
"com.liangjidong.mapper.UserMapper.selectById", 1);
System.out.println(user);
方式二: 对xml文件中的sql语句使用接口方式调用
前面调用sql语句的方式为
session.selectOne("com.liangjidong.mapper.UserMapper.selectById", 1);这种方式容易发生的字符串文字和转换的错误。通过使用接口的方式来调用既方便有不易出现错误
首先定义接口UserMapper.java
package com.liangjidong.mapper; import com.liangjidong.pojo.User; public interface UserMapper { public User selectById(int id); }
请注意,这里面有一个方法名 selectById必须与 User.xml 里面配置的 select 的id 对应(<select id=" selectById ")
这种方式,要注意的一个地方就是。在UserMapper.xml 的配置文件中,mapper namespace=" com.liangjidong.mapper.UserMapper " ,命名空间非常重要,不能有错,必须与我们定义的package 和接口一致。
测试代码如下:
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.selectById(1);
对数据库的增,删,该和前面类似
注意:在update时,遇到整形时,且对象中没有添加该数据,则默认会以0为结果更新到数据库中,解决办法:在判断的时候加上and age!=''"
<if test="age!=null and age!=''">
age=#{age},
</if>
但是调用结束后要提交事务(不然数据是不会更新到数据库中的)
session.commit();
总结:mybatis中调用增,删,改,查接口应该返回的数据分别是:
insert,返回值是:新插入行的主键(primary key);需要包含<selectKey>语句,才会返回主键,否则返回值为null。
update/delete,返回值是:更新或删除的行数;无需指明resultClass;但如果有约束异常而删除失败,只能去捕捉异常。
queryForObject,返回的是:一个实例对象或null;需要包含<select>语句,并且指明resultMap;
queryForList,返回的是:实例对象的列表;需要包含<select>语句,并且指明resultMap;
非Spring环境下使用Mybatis操作数据库的流程的更多相关文章
- MyBatis在非Spring环境下第三方DataSource设置-Druid篇
首先在ITEye上面看到一个同标题文章,在此说明,此文并非转载自 http://iintothewind.iteye.com/blog/2069522 ,因为这篇文章根本就是错误的,照着上面做,工程可 ...
- 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用
一.什么是 RestTemplate? RestTemplate是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(例如JDK HttpURLConnection,Apache HttpCo ...
- 非域环境下使用证书部署数据库(SqlServer2008R2)镜像
非域环境下使用证书部署数据库(SqlServer2008R2)镜像 前言 部署数据库镜像一般有两种方式域环境下部署http://liulike.blog.51cto.com/1355103/33918 ...
- Mybatis在非spring环境下配置文件中使用外部数据源(druidDatasource)
Spring环境下, MyBatis可以通过其本身的增强mybatis-spring提供的org.mybatis.spring.SqlSessionFactoryBean来注入第三方DataSourc ...
- MyBatis在Spring环境下的事务管理
MyBatis的设计思想很简单,可以看做是对JDBC的一次封装,并提供强大的动态SQL映射功能.但是由于它本身也有一些缓存.事务管理等功能,所以实际使用中还是会碰到一些问题--另外,最近接触了JFin ...
- 七年开发小结MyBatis 在 Spring 环境下的事务管理
MyBatis的设计思想很简单,可以看做是对JDBC的一次封装,并提供强大的动态SQL映射功能.但是由于它本身也有一些缓存.事务管理等功能,所以实际使用中还是会碰到一些问题——另外,最近接触了JFin ...
- Shiro —— Spring 环境下的使用
一.使用 1.搭建基础环境 (1)导入 Spring 和 Shiro 的 Jar 包 正常导入 spring jar包 导入日志包 log4j-1.2.15.jar slf4j-api-1.6.1.j ...
- 非域环境下SQL Server搭建Mirror(镜像)的详细步骤
1.测试验证环境 服务器角色 机器名 IP SQL Server Ver 主体服务器 WIN-TestDB4O 172.83.XXX.XXX SQL Server 2012 - 11.0.5058.0 ...
- Redis(十五)Redis 的一些常用技术(Spring 环境下)
一.Redis 事务与锁机制 1.Redis的基础事务 在Redis中开启事务的命令是 multi 命令, 而执行事务的命令是 exec 命令.multi 到 exec 命令之间的 Redis 命令将 ...
随机推荐
- POJ3045--Cow Acrobats(theory proving)
Farmer John's N (1 <= N <= 50,000) cows (numbered 1..N) are planning to run away and join the ...
- Hdu1054 Strategic Game(最小覆盖点集)
Strategic Game Problem Description Bob enjoys playing computer games, especially strategic games, bu ...
- C - Roll-call in Woop Woop High
Description The new principal of Woop Woop High is not satisfied with her pupils performance. She in ...
- WINDOWS CLUSTER -- 时间不同步导致的群集问题
故障描述,重启服务器后,发现该重启节点未成功加入到Windows群集中,导致该节点上的Alwayson服务也受影响处于“正在解析”状态,尝试重启cluster服务,发现无效,查看windows日志,发 ...
- 利用GDI+处理图像的色彩
首先先介绍一下ColorMatrix结构体:表示颜色的变换关系,定义如下: typedef struct { REAL m[][]; } ColorMatrix; ColorMatrix结构体一般和I ...
- 6.翻译:EF基础系列---什么是EF中的实体?
原文地址:http://www.entityframeworktutorial.net/basics/what-is-entity-in-entityframework.aspx EF中的实体就是继承 ...
- 使用C#写MVC框架(一:核心原理)
目录: 一.MVC原理解析 二.HttpHandler 1.HttpHandler,IHttpHandler,MvcHandler的说明 2.IHttpHandler解析 3.MvcHandler解析 ...
- mysql多列索引
1,数据库每次查询只能使用一个索引 2,假设数据 表T (a,b,c) rowid 为物理位置rowid a b c(1) 1 1 1(2) 2 1 13(3) 2 2 14(4) 1 3 3(5) ...
- Python之分支结构
if lengeh >= 100: #每个条件后面要使用冒号 if lengeh>=10000: ") elif lengeh>=1000: ') else: pass e ...
- Shell - 简明Shell入门05 - 条件语句(Case)
示例脚本及注释 #!/bin/bash var=$1 # 将脚本的第一个参数赋值给变量var case $var in right) echo "Right!";; wrong) ...