mybatis使用

命名规范

1.项目名:没有要求,不起中文

2.包:公司域名倒写 com.bjsxt

3.数据访问层:dao, persist, mapper (mybatis)

4.实体:entity, model, bean,javabean, pojo

5.业务逻辑: service ,biz
6.控制器: controller, servlet,action,web

7.过滤器: filter
8.异常: exception
9.监听器:listener
10.注释:

  10.1 类上和方法上使用文档注释 /** */

   10.2 在方法里面使用/* */ 或 //

11.类: 大驼峰
12.方法,属性:小驼峰

************************

MVC 开发模式

1. M: Model 模型,实体类和业务和 dao

2. V: view 视图. JSP
3. C:Controller 控制器,servlet

3.1 作用:视图和逻辑分离
4. MVC适用场景:大型项目开发.

5. 图示例

5.1 先设计数据库

5.2 先写实体类

5.3 持久层
5.4 业务逻辑

5.5 控制器

5.6 视图

****************************

 

MyBatis 简介

1. Mybatis开源免费框架.原名叫iBatis,2010在googlecode,2013年迁 移到 github
 2. 作用: 数据访问层框架.

 2.1 底层是对 JDBC 的封装. 3. mybatis优点之一:

3.1 使用mybatis时不需要编写实现类,只需要写需要执行的sql命令

*********************************

mybits环境搭建 

1, 导入jar包 

2. 在 src 下新建全局配置文件(编写 JDBC 四个变量) 2.1 没有名称和地址要求
2.2 在全局配置文件中引入 DTD 或 schema

2.2.1 如果导入 dtd 后没有提示
Window--> preference --> XML --> XMl catalog --> add 按钮

2.3 全局配置文件内容

<?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>
<!-- default 引用 environment 的 id,当前所使用的环境 --> <environments default="default">
<!-- 声明可以使用的环境 --> <environment id="default">
<!-- 使用原生 JDBC 事务 -->
<transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/ssm"/> <property name="username" value="root"/>
<property name="password" value="smallming"/>
             </dataSource>
        </environment>
    </environments>
<mappers>
<mapper resource="com/bjsxt/mapper/FlowerMapper.xml"/>
    </mappers>
</configuration>

3. 替换dao层,新建以 mapper 结尾的包,在包下新建:实体类名+Mapper.xml 3.1 文件作用:编写需要执行的 SQL 命令
3.2 把 xml 文件理解成实现类.
3.3 xml 文件内容

<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namesapce:理解成实现类的全路径(包名+类名) --> <mapper namespace="a.b" >
<!-- id:方法名 parameterType:定义参数类型 resultType:返回值类型.
如果方法返回值是 list,在 resultType 中写 List 的泛型, 因为 mybatis
对 jdbc 封装,一行一行读取数据 -->
<select id="selAll"
resultType="com.bjsxt.pojo.Flower"> select * from flower
   </select>
</mapper>

4. 测试结果(只有在单独使用 mybatis 时使用,最后 ssm 整合时下面代 码不需要编写.)

InputStream is = Resources.getResourceAsStream("myabtis.xml");
//使用工厂设计模式
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//生产 SqlSession
SqlSession session=factory.openSession();
List<Flower> list = session.selectList("a.b.selAll");
for (Flower flower : list) { System.out.println(flower.toString());
} session.close();

****************

<settings>标签

1.在 mybatis 全局配置文件中通过<settings>标签控制 mybatis 全局开 关
2.在 mybatis.xml 中开启 log4j

2.1 必须保证有 log4j.jar
2.2 在 src 下有 log4j.properties

<settings>
<setting name="logImpl" value="LOG4J"/> 
</settings>

3.log4j 中可以输出指定内容的日志(控制某个局部内容的日志级别) 3.1 命名级别(包级别): <mapper>namespace 属性中除了最后一个 类名
例如 namespace=”com.bjsxt.mapper.PeopleMapper” 其中包级别为 com.bjsxt.mapper ,需要在 log4j.propeties 中

3.1.1 先在总体级别调成 Error 不输出无用信息 3.1.2 在设置某个指定位置级别为 DEBUG

3.2 类级别

3.2.1 namespace 属性值 ,namespace 类名

3.3 方法级别
3.3.2 使用 namespace 属性值+标签 id 属性值

 

********************

parameterType 属性

1. 在XXXMapper.xml中<select><delete>等标签的parameterType可以 控制参数类型
2. SqlSession的selectList()和selectOne()的第二个参数和selectMap() 的第三个参数都表示方法的参数.

2.2 在 Mapper.xml 中可以通过#{}获取参数 2.2.1 parameterType 控制参数类型 2.2.2 #{}获取参数内容

2.2.2.1 使用索引,从 0 开始 #{0}表示第一个参数
2.2.2.2 也可以使用#{param1}第一个参数
2.2.2.3 如果只有一个参数(基本数据类型或 String),mybatis

对#{}里面内容没有要求只要写内容即可. 2.2.2.4 如果参数是对象#{属性名} 2.2.2.5 如果参数是 map 写成#{key}

3. #{} 和 ${} 的区别
3.1 #{} 获取参数的内容支持 索引获取,param1 获取指定位置参数, 并且 SQL 使用?占位符
3.2 ${} 字符串拼接不使用?,默认找${内容}内容的 get/set 方法,如 果写数字,就是一个数字

4. 如果在 xml 文件中出现 “<” , “>” ,双引号 等特殊字符时可以使用 XML 文件转义标签(XML 自身的)

4.1 <![CDATA[ 内容 ]]>
5. mybatis中实现mysql分页写法

5.1 ?不允许在关键字前后进行数学运算,需要在代码中计算完成 后传递到 mapper.xml 中

5.2 在 java 代码中计算

//显示几个
int pageSize = 2;
//第几页
int pageNumber = 2; //如果希望传递多个参数,可以使用对象或 map Map<String,Object> map = new HashMap<>(); map.put("pageSize", pageSize); map.put("pageStart", pageSize*(pageNumber-1)); List<People> p =
session.selectList("a.b.page",map);

5.3 在 mapper.xml 中代码

<select id="page" resultType="com.bjsxt.pojo.People" parameterType="map">
select * from people limit #{pageStart},#{pageSize}
</select>

*********************

typeAliases别名

1.系统内置别名: 把类型全小写 2.给某个类起别名

2.1 alias=”自定义”

<typeAliases>
<typeAlias type="com.bjsxt.pojo.People"
alias="peo"/> </typeAliases>

2.2 mapper.xml 中 peo 引用 People 类

<select id="page" resultType="peo" parameterType="map">
select * from people limit #{pageStart},#{pageSize}
</select>

3.直接给某个包下所有类起别名,别名为类名,不区分大小写 3.1 mybatis.xml 中配置

<typeAliases>
<package name="com.bjsxt.pojo" />
</typeAliases>

3.2 mapper.xml 中通过类名引用

<select id="page" resultType="People" parameterType="map">
select * from people limit #{pageStart},#{pageSize}
</select>

**********************

MyBatis 实现新增

1. 概念复习
1.1 功能:从应用程序角度出发,软件具有哪些功能.
1.2 业务:完成功能时的逻辑.对应 Service 中一个方法
1.3 事务:从数据库角度出发,完成业务时需要执行的 SQL 集合,统

称一个事务.
1.3.1 事务回滚.如果在一个事务中某个 SQL 执行事务,希望回

归到事务的原点,保证数据库数据的完整性.
2. 在 mybatis 中默认是关闭了 JDBC 的自动提交功能

2.1 每一个 SqlSession 默认都是不自动提交事务.
2.2 session.commit()提交事务.
2.3 openSession(true);自动提交.setAutoCommit(true);

3. mybatis底层是对JDBC的封装.
3.1 JDBC 中 executeUpdate()执行新增,删除,修改的 SQL.返回值 int, 表示受影响的行数.
3.2 mybatis 中<insert> <delete> <update>标签没有 resultType 属性, 认为返回值都是 int

4. 在 openSession()时 Mybatis 会创建 SqlSession 时同时创建一个 Transaction(事务对象),同时 autoCommit 都为 false

4.1 如果出现异常,应该 session.rollback()回滚事务. 5. 实现新增的步骤

5.1 在 mapper.xml 中提供<insert>标签,标签没有返回值类型

<insert id="ins" parameterType="People">
insert into people values(default,#{name},#{age})
</insert>

5.2 通过 session.insert()调用新增方法

int index1 = session.insert("a.b.ins", p); if(index1>0){
System.out.println("成功"); }else{
System.out.println("失败"); }

 

MyBatis是一个流行的Java持久化框架之一,可以简化与关系型数据库的交互。在使用MyBatis时,我们可以使用properties来配置一些常用的属性,以便在不同环境中灵活地配置和管理。 然而,有时候我们会遇到MyBatis使用properties无效的情况。这可能由以下原因导致: 1. properties文件未正确配置:首先,要确保properties文件的路径和名称是正确的,并且在配置文件中正确引用。此外,还需要检查properties文件中的属性是否按照MyBatis规定的格式进行了正确定义。 2. properties文件未加载:MyBatis在加载配置文件时,默认会加载classpath下的mybatis-config.xml文件。如果你将properties文件放置在了其他位置,需要确保在mybatis-config.xml文件中进行了正确的配置和引用。 3. 属性引用错误:在MyBatis的配置文件中,我们可以通过`${property.name}`的方式引用properties文件中的属性值。如果你没有正确引用或引用了不存在的属性值,可能会导致properties文件无效。 4. XML配置错误:在MyBatis的配置文件中,如果XML格式错误或标签使用不正确,可能会导致properties文件无法正确加载和使用。 总之,当我们发现MyBatis使用properties无效时,我们需要仔细检查properties文件的配置和引用是否正确,确保properties文件被正确加载,并且在配置文件中通过正确的方式引用属性值。此外,还需要注意XML配置文件的正确性。如果所有配置都正确,但问题仍然存在,可能需要查看MyBatis的日志文件以获取更多的错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值