mybatis map参数_Mybatis框架的简单深入:
(今天继昨天学习的深入)(谢谢观赏,充实每一天)<typeAliases>标签:功能:用于给 java 类型定义别名, 方便在配置文件中使用.使用方式:1..给 User 类型定义别名为 u.<!-- typeAliases给类型起别名 --><typeAliases><!-- 给User类起别名为u --><typeAlias type...
·
(今天继昨天学习的深入)
(谢谢观赏,充实每一天)
<typeAliases>标签:
功能:用于给 java 类型定义别名, 方便在配置文件中使用.
使用方式:
1..给 User 类型定义别名为 u.
<!-- typeAliases给类型起别名 -->
<typeAliases>
<!-- 给User类起别名为u -->
<typeAlias type="pojo.User" alias="u" />
</typeAliases>
2.<typeAlias>中, 可以省略 alias 属性, 表示类别名为类名, 大小写不敏感.
<typeAliases>
<!-- 给User类起别名, 别名为user -->
<typeAlias type="pojo.User" />
</typeAliases>
3.可以通过<package>给整个包下的所有类定义别名为类名
<typeAliases>
<!-- 给包下的所有类定义别名为类名 -->
<package name="pojo" />
</typeAliases>
MyBatis 的内建别名:
二,带参数的查询。
如果执行的是条件查询, 需要在调用方法时传参数进来, 此
时, 可以在 select 标签中通过 parameterType 属性指定参数
的类型. 而在 SQL 语句中, 可以通过#{}的方式获取参数.
一个参数的查询,例如:
根据 id 查询用户信息. 当只有一个参数时, #{}中可以任意填写。
<!-- parameterType, 参数类型, 用于参数的传递 -->
<select id="selById" resultType="user" parameterType="int">
<!--
#{}用于获取参数
index, 索引, 从0开始
param+数字, param1, param2
-->
select * from t_user where id=#{param1}
</select>
@Test
public void selById() {
SqlSession session = null;
try {
session = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsStream("mybatis-cfg.xml"))
.openSession();
User user =
session.selectOne("mapper.UserMapper.selById", 2);
System.out.println(user);
} catch (IOException e) {
e.printStackTrace();
} finally {
session.close();
}
多个参数的查询:
多个参数传递时, 由于 sqlSession 中提供的查询方法只允
许传入一个参数, 因此可以对多个参数进行封装. 可以使用
对象或 Map 集合.
<select id="sel" resultType="user" parameterType="user">
<!-- 如果参数是对象, 可以通过#{属性名}来获取 -->
select * from t_user where username=#{username} and
password=#{password}
</select>
@Test
public void sel() {
SqlSession session = null;
try {
session = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsStream("mybatis-cfg.xml"))
.openSession();
User u = new User();
u.setUsername("zhangsan");
u.setPassword("123");
User user =
session.selectOne("mapper.UserMapper.sel", u);
System.out.println(user);
} catch (IOException e) {
e.printStackTrace();
} finally {
session.close();
}
}
封装为 Map:
<select id="sel" resultType="user" parameterType="map">
<!-- 如果参数是map, 可以通过#{key}来获取 -->
select * from t_user where username=#{uname} and password=#{upwd}
</select>
public void sel() {
SqlSession session = null;
try {
session = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsStream("mybatis-cfg.xml"))
.openSession();
Map<String, String> map = new HashMap<>();
map.put("uname", "lisi");
map.put("upwd", "123");
User user =
session.selectOne("mapper.UserMapper.sel", map);
System.out.println(user);
} catch (IOException e) {
e.printStackTrace();
} finally {
session.close();
}
}
事务(Transaction)
1.事务是数据库操作的最小单元, 有 ACID 的特性. 应该保
证一个事务的的 SQL 语句要么同时成功, 要么都不成功.
2.MyBatis 中配置了事务管理器, type 属性设置为 JDBC.
表示 MyBatis 采用和原生 JDBC 相同的事务管理机制.
3.在 MyBatis 执行的开始时,将自动提交功能关闭了.所以,
在执行 DML 操作时, 需要手动提交事务.
简单提取工具类(Util)
package com.bjsxt.util;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
*以上是包
*/
public class MyBatisUtil {
private static SqlSessionFactory factory = null;
static {
try {
InputStream is =
Resources.getResourceAsStream("mybatis-cfg.xml");
factory = new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSession() {
SqlSession session = null;
if (factory != null) {
// true表示开启自动提交
// session = factory.openSession(true);
session = factory.openSession();
}
return session;
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)