Mybatis初始
1.Mybatis 的作用
完成基本的sql语句 和 存储过程 高级的对象关系映射(ORM) 框架
封装了几乎所有的 JDBC 代码 参数的手工设置 结果集的遍历
2.Mybatis 框架的主体构成
实体类 用来封装数据
SQL定义文件 定义sql语句的
主配置文件 配置连接数据库信息 和 加载SQL定义文件
框架API 通过SqlSession 来完成对应的功能。
3.Mapper 映射器的规则 (Mapper映射器的意思是 可以根据接口 自动生成实现类)
3.1 接口中的方法名 和 Mapper 文件中 id 保持一致
32 接口方法的参数 和 parameterType 保持一致 如果没有 parameterType
则参数可以根据实际情况自由设计。
3.3 方法的返回值 和 resultType 尽量一致
如果select 最多返回一个值 则 resultType 保持完全一致
如果select 可能返回 多个值 则返回 List<resultType>
DML(insert delete update) 可以设计成void 也可以返回 int
3.4 Mapper文件 中 namespace 必须是 包名.接口名
4.为了简化 类型的编写 可以给类型起别名
<configuration>
<typeAliases>
<typeAlias type="com.xdl.bean.XdlBankAccount" alias="account"/>
</typeAliases>
5. 当数据库中的字段名 和 bean 的属性名不一致时如何处理?
5.1 通过给数据库中的字段 起别名来解决
5.2 使用 resultMap 来 指定数据库字段 和 bean 中属性的对应关系
下面说一下Mybaties的变成步骤:
首先还是导入Mybaties.jar,和Ojdbc的包,
拷贝一个slqMapper配置文件到类路径下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
<!-- typeAliases开启别名标注 -->
<typeAliases>
<typeAlias type="cn.com.bean.BankAccount" />
</typeAliases> <environments default="environment">
<environment id="environment">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
<property name="username" value="scott" />
<property name="password" value="tiger" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/com/mapper/AccountMapper.xml" />
</mappers>
</configuration>
创建一个映射包,cn.com.mapper,并创建一个账户的映射,用于存储sql语句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="cn.com.Dao.BankAccountDAO"><!-- 命名空间必须和包名,类名相同 -->
<!-- 定义SQL语句 --> <select id="findAccountById" parameterType="int"
resultType="cn.com.bean.BankAccount">
select * from XDL_BANK_ACCOUNT where id=#{n}
</select> <select id="findCount" resultType="int">
select count(*) from
XDL_BANK_ACCOUNT
</select> <select id="findAccountByNo" parameterType="java.lang.String"
resultType="cn.com.bean.BankAccount">
select * from XDL_BANK_ACCOUNT where acc_no=#{n}
</select> <select id="findAccountByName" parameterType="cn.com.bean.BankAccount"
resultType="cn.com.bean.BankAccount">
select * from XDL_BANK_ACCOUNT where acc_no = #{acc_no} and
acc_password = #{acc_password}
</select> <select id="findAccountGtId" parameterType="int"
resultType="cn.com.bean.BankAccount">
select * from XDL_BANK_ACCOUNT where id > #{id}
</select> <select id="findAccountMinId" parameterType="int"
resultType="cn.com.bean.BankAccount">
select * from XDL_BANK_ACCOUNT where id < #{id} </select> <select id="findAccountMinId2" parameterType="int"
resultType="cn.com.bean.BankAccount">
select * from XDL_BANK_ACCOUNT where id <![CDATA[<]]>
#{id}
</select> <!-- 定义一个插入语句 -->
<insert id="insertAccount" parameterType="cn.com.bean.BankAccount">
insert into
XDL_BANK_ACCOUNT values
(XDL_BANK_ACCOUNT_ID_SEQ.nextval,#{acc_no},#{acc_password},#{acc_money})
</insert> <delete id="deleteAccouontById" parameterType="int">
delete from
XDL_BANK_ACCOUNT where id=#{id}
</delete> <update id="updateAccountById" parameterType="cn.com.bean.BankAccount">
update
XDL_BANK_ACCOUNT set
acc_no=#{acc_no},acc_password=#{acc_password},acc_money=#{acc_money}
where id=#{id}
</update> <!-- 根据账号和密码查询银行账户 -->
<select id="getAccountByAccNOAndPassword" resultType="cn.com.bean.BankAccount">
select *
from XDL_BANK_ACCOUNT where acc_no=#{param1} and
acc_password=#{param2}
</select> <!-- <select id="getAccountByAccNOAndPassword2" resultType="cn.com.bean.BankAccount">
selsect * from XDL_BANK_ACCOUNT where acc_no=#{param1} and acc_password=#{param2}
</select> --> <!-- 如果类型中的名字不相同 -->
<resultMap type="cn.com.bean.BankAccount2" id="account2">
<result column="id" property="acc_id" />
</resultMap>
<select id="getAccountByAccNOAndPassword2" resultMap="account2">
select * from XDL_BANK_ACCOUNT where acc_no=#{param1} and acc_password=#{param2}
</select>
</mapper>
这里面的特殊字符如大于号,小于号需要特殊处理:
| < | < | 小于号 |
| > | > | 大于号 |
| & | & | 和 |
| ' | ’ | 单引号 |
| " | " | 双引号 |
或者:
因为这个是xml格式的,所以不允许出现类似“>”这样的字符,但是都可以使用<![CDATA[ ]]>符号进行说明,将此类符号不进行解析
你的可以写成这个:
<![CDATA[ when min(starttime)<='12:00' and max(endtime)<='12:00' ]]>
接着上面的说,再写一个dao接口:
public interface BankAccountDAO {
BankAccount findAccountById(int id);
int updateAccountById(BankAccount acc);
List<BankAccount> findAccountGtId(int id);
BankAccount getAccountByAccNOAndPassword(String acc_no,String acc_password);
BankAccount getAccountByAccNOAndPassword2(String acc_no,String acc_password);
}
写一个工具类,以便后期我们创建SqlSession使用,
public class SqlSessionUtil {
private static SqlSessionFactory ssf = null;
static {
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
InputStream inputs = BankSessionTest.class.getClassLoader().getResourceAsStream("sqlmap-config.xml");
ssf = ssfb.build(inputs);
}
public static SqlSession getSqlSession() {
return ssf.openSession();
}
}
好了,开始测试:
public static void main(String[] args) {
BankAccountDAO dao=new BankAccounDaoIMP();
/*BankAccount acc=dao.findAccountById(46);
System.out.println(acc);*/
/*
int updateAccountById = dao.updateAccountById(new BankAccount(9, "han", "21345", 88888));
System.out.println(""+updateAccountById);*/
/*BankAccount accountd = dao.getAccountByAccNOAndPassword("1111", "2222");
System.out.println(accountd.toString());
*/
// BankAccount accountBy = dao.getAccountByAccNOAndPassword2("1111", "2222");
// System.out.println(accountBy.toString());
BankAccount account = dao.getAccountByAccNOAndPassword2("1111", "2222");
System.out.println(account.toString());
}
Mybatis初始的更多相关文章
- mybatis 初始
接下来带着大家建立一个mybatis的初级项目 首先我们利用idea利用maven建立一个空项目 然后输入名称什么的就会创建一个空的maven项目了 然后我们需要在项目总得pom.xml中进行配置信息 ...
- 初始MyBatis
初始MyBatis 框架的概念: 框架是一个提供可重复的功用结构的半成品.它为我们构建新的应用程序提供了极大的便利,一方面提供了可以拿来就用的工具,更重要的是提供了可重用的设计.D 框架技术的优势: ...
- 初始MyBatis、SQL映射文件
MyBatis入门 1.MyBatis前身是iBatis,是Apache的一个开源项目,2010年这个项目迁移到了Google Code,改名为MyBatis,2013年迁移到GitHub.是一个基于 ...
- MyBatis 框架系列之基础初始
1.什么是 MyBatis MyBatis 本是 apache 的一个开源项目 iBatis,后改名为 MyBatis,它 是一个优秀的持久层框架,对 jdbc 的操作数据库的过程进行封装,使开发者只 ...
- mybatis笔记 - 初始配置及dao的封装
1.用户实体类 package com.javasm.entity; /** * *TODO 用户表实体类 * @author CaoLei 2018年6月26日上午10:50:12 * Manage ...
- 初始Mybatis,好累,自己感觉自己快坚持不了了
Mybatis1.持久化 持久化,就是内存数据和硬盘数据状态的转换 2.ORM思想Object Relation Mapping 对象关系映射 3.MyBatis入门案例 3.1导入jar包 依赖 & ...
- Mybatis学习——初始MyBatis
什么是MyBatis框架? MyBatis框架是一种ORM(既对象关系映射)框架. 什么是ORM框架? 是一种为了解决面向对象与关系数据库之间数据不匹配的技术,它通过描述Java对象和关系数据库表之间 ...
- SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)【转】
使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...
- spring+springmvc+mybatis xml配置文件
一.jdbc.properties 文件: driver=com.mysql.jdbc.Driverurl=jdbc:mysql://192.168.31.xxx:3306/abc?useUnicod ...
随机推荐
- Android 的一些中文文档
https://blog.csdn.net/qq_36467463/article/details/77990089 //安卓mediaformat api详解 https://www.cnbl ...
- Android 的学习心得
https://www.jianshu.com/p/f93a6c75940c 一个2年安卓开发者的一些经验分享
- 【ocp-12c】最新Oracle OCP-071考试题库(42题)
42.(9-1)choose the best answer: Which statement is true about the Oracle SQL, DELETE and TRUNCATE st ...
- express 直接返回HTML文件
一般情况下用的是模板引擎,如jade: res.render('detail',{ // 使用render() #http://www.expressjs.com.cn/4x/api.html#res ...
- elasticsearch 5.6.4自动创建索引与mapping映射关系 +Java语言
由于业务上的需求 ,最近在研究elasticsearch的相关知识 ,在网上查略了大部分资料 ,基本上对elasticsearch的数据增删改都没有太大问题 ,这里就不做总结了 .但是,在网上始终没 ...
- Oracle执行SQL语句的过程
转载至:http://blog.csdn.net/aqszhuaihuai/article/details/7024551 当我们提交一条sql语句时,Oracle会做哪些操作呢? Oracle会为每 ...
- mysql常用日期、时间查询
好记性不如烂笔头 select curdate(); --获取当前日期 select last_day(curdate()); --获取本月最后一天. day); -- 获取本月第一天 ,interv ...
- 编程开发之--java多线程学习总结(4)
3.使用锁机制lock,unlock package com.lfy.ThreadsSynchronize; import java.util.concurrent.locks.Lock; impor ...
- 利用Android Studio编写 Android上的c与c++程序
利用Android Studio编写 Android上的c与c++程序 (2017-05-22 19:01:20) 转载▼ 标签: android 分类: Android开发 原文链接: http:/ ...
- PCA简单实现
''' 总结一下PCA的算法步骤: 设有m条n维数据. 1)将原始数据按列组成n行m列矩阵X 2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值 3)求出协方差矩阵C=1/m*(XX ...