Mybatis基本用法

搭建mybatis环境

1, 导入需要的jar包
  mybatis-*.*.*.jar
  ojdbc6.jar

2, 配置mybatis的总配置文件: mybatis-config.xml
  配置根标签

<!-- 根标签 -->
		<configuration>
			<!-- 
				引入属性文件
				属性文件通常写数据库连接的信息
					username(注意一个问题, 属性文件中不要单独写一个username)
					password
					url
					driverClass
			-->
			<property resource="属性文件所在src下的位置" />

			<!-- 或者直接定义属性值 -->
			<properties>
				<property name="jdbc.username" value="test" />
				<property name="jdbc.password" value="test" />
				<property name="jdbc.driverClassName" value="oracle.jdbc.OracleDriver" />
				<property name="jdbc.url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
			</properties>

			<!-- 为实体类定义一个别名, 如果不定义别名, 在映射文件中就要写这个实体类的全路径名 -->
			<typeAliases>
				<!-- 这个写法取的别名是随意的, 可以自己任意定义 -->
				<!-- <typeAlias type="类名的全路径名" alias="别名"></typeAlias> -->
				<!-- 如果使用下面这个写法, 就是按照mybatis自己定义的规则, 这个包下的所有类的类名就是别名 -->
				<package name="com.model"/>
				<!-- 使用package标签实际是默认扫描model包下的所有的类, 如果在实体类的定义了注解@Alias(value = "..."), 则优先使用注解 -->
			</typeAliases>

			<!-- 配置mybatis的运行环境们 -->
			<environments default="所使用的环境的标签id">
				<environment id="default">
					<!-- 
						配置事务管理器的类型
							JDBC
							MANAGED--(托管, 商业服务器上才有的功能, Tomcat没有)
					-->
					<transactionManager type="JDBC" />
					<!-- 
						POOLED(基于连接池的数据源)
						UNPOOLED(使用普通的数据库连接)
						JNDI(使用应用服务器上的JNDI连接配置数据源, 很少使用)
					-->
					<dataSource type="POOLED">
						<property name="username" value="${属性文件中配置的信息}"></property>
						<property name="password" value="${属性文件中配置的信息}"></property>
						<property name="url" value="${属性文件中配置的信息}"></property>
						<property name="driver" value="${属性文件中配置的信息}"></property>
					</dataSource>
				</envirment>
			</environments>
			<mappers>
				<!-- 挨个写明每个映射文件所在的位置 -->
				<mapper resource="src下mapper映射文件的全路径名">
				<!-- 写明每个映射文件所对应的接口的限定名, package引入的文件一定是接口, 
				所以如果使用这种方式, 必须是使用接口对应映射文件的方式 -->
				<package name="接口所在的包" />
			</mappers>
		</configuration>

3, 新建每个实体类的映射文件...Mapper.xml

<!-- 定义每个实体类的映射文件 -->
  <mapper namespace="唯一的id / 接口的全路径名">
    <select id="被调用的id(唯一) / 需要执行的方法名"></select>
  <insert></insert>
  <update></update>
  <delete></delete>
  </mapper>

  resultType: 类的全路径名 / 定义好的别名
  resultMap: 指定返回结果的集合
  parameterType: 指的是, 进行查询的时候所需要的参数类型

4, 写测试类运行mybatis

MybatisUtil
			两步:
				1, 构建SqlSessionFactory
					InputStream in = Resources.getResourceAsStream("总配置文件所在的src下的路径");
					SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
				2, 构建SqlSession(注意SqlSession不能以一个class成员变量的身份被返回)
					SqlSession ss = ssf.openSession();
				3, 直接运行
					a: 直接运行映射文件中的sql语句
						ss.select...
						ss.insert...
						ss.update...
						ss.delete...
					b: 使用接口映射配置文件
						ss.getMapper(接口类名.class);
						调用接口的方法

一对一, 一对多查询
1, 一对一
		映射文件中写明resultMap, 这时sql语句一定用关联查询多个表的内容
			<resultMap type="类名" id="...">
				<id property="实体类中成员变量的名字" column="查询结果中的列名" />
				<result property="成员变量的名字" column="查询结果中的列名" />
				...
				<!-- 对象级联 -->
				<result property="major.majorid" column="查询结果中的列名" />
				<result property="major.mname" column="查询结果中的列名" />
			</resultMap>
			<resultMap type="类名" id="...">
				<id property="实体类中成员变量的名字" column="查询结果中的列名" />
				<result property="成员变量的名字" column="查询结果中的列名" />
				...
				<!-- 对象级联 -->
				<association property="major" resultMap="定义好的另一个resultMap" />
			</resultMap>
			<resultMap type="类名" id="...">
				<association property="属性名" select="其他映射文件中的查询语句" />
			</resultMap>
	2, 一对多
			<resultMap type="类名" id="...">
				<collection property="students" select="其他映射文件中的查询语句" />
			</resultMap>

动态sql语句

1, <if>条件
		<if test="key!=null">
			拼接sql语句
		</if>
	2, <choose><when><otherwise>
		<choose>
			<when test="key=='value'">
				拼接sql语句
			</when>
			<when test="key=='value'">
				拼接sql语句
			</when>
			<otherwise>
				拼接sql语句
			</otherwise>
		</choose>
	3, <where>
		自动添加where关键字
		如果where子句第一句中有 or 或者 and 则删除第一个
	4, <trim>
		功能与<where>类似, 并且提供了前缀, 后缀的添加, 更加灵活
	5, <foreach>
		用来遍历传入的集合参数
			item(定义集合中每个对象的名字), 
			collection(集合的对象的名字), 
			open(定义开始的字符), 
			close(定义结束的字符), 
			separator(定义分割的字符)
	6, <set>
		主要用于update
		自动加上set关键字
		自动剔除最后一个 ","
	7, <sql>
		经常用于一些常用或者固定的语句, 在外面定义一个语句, 在各种标签中引入
		使用include, 相当于直接写在上面
	8, <selectKey>
		用于不支持自增长主键的数据库, 尽量避免写这个东西


	<	<	小于号                                           
	>	>	大于号
	&	&	和
	'	’	单引号
	"	"	双引号

	<![CDATA[]]>

  

 

 

转载于:https://www.cnblogs.com/donghb/p/7580160.html

MyBatis Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上添加了许多实用的功能,可以极大地提高 MyBatis 的开发效率。 MyBatis Plus 的基本使用方法如下: 1. 引入 MyBatis Plus 的依赖 Maven 依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> ``` 2. 配置 MyBatis Plus 在 Spring Boot 的配置文件中添加 MyBatis Plus 的配置,如下: ```yaml mybatis-plus: # 实体扫描,多个用逗号分隔 typeAliasesPackage: com.example.demo.entity # mapper 扫描,多个用逗号分隔 mapperLocations: classpath:/mapper/*.xml # 配置数据库驱动、连接地址、用户名和密码 global-config: db-config: id-type: auto table-prefix: t_ ``` 3. 编写实体类 ```java @Data @AllArgsConstructor @NoArgsConstructor public class User { private Long id; private String name; private Integer age; private String email; } ``` 4. 编写 Mapper ```java @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 5. 使用 MyBatis Plus 提供的 API ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public List<User> getUserList() { return userMapper.selectList(null); } @Override public User getUserById(Long id) { return userMapper.selectById(id); } @Override public boolean addUser(User user) { return userMapper.insert(user) > 0; } @Override public boolean updateUser(User user) { return userMapper.updateById(user) > 0; } @Override public boolean deleteUser(Long id) { return userMapper.deleteById(id) > 0; } } ``` 以上就是 MyBatis Plus 的基本使用方法,通过 MyBatis Plus 提供的 API,我们可以很方便地进行 CRUD 操作。同时,MyBatis Plus 还提供了很多其他的实用功能,例如分页查询、条件查询、乐观锁、自动填充等等,可以根据具体需求进行使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值