Mybatis学习笔记(一)入门程序及Mapper代理方法

Mybatis根据id查询用户

首先要建立pojo实体类对象,User里有name,age,gender
配置log4j.properties(DEBUG为调试,ERROR和Info为生产环境)

# Global logging configuration
#ERROR\DEBUG
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

配置SqlMapConfig.xml
该部分在和Spring整合后就不需要了

<?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>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.cj.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://127.0.0.1:3306/datasheet?serverTimezone=UTC" />
				<property name="username" value="root" />
				<property name="password" value="123123" />
			</dataSource>
		</environment>
	</environments>

	<mappers>
		<mapper resource="User.xml" />
	</mappers>

</configuration>

配置User.xml
映射的两个sql查询方法
#{}是占位符号,如果接收简单类型,里面可以写成value或其他
${}是拼接符号,如果接收简单类型,只能写value名称,会引起sql注入,不建议使用

<?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="test">
	<!-- 精准查询 -->
	<select id="findUserByAge" parameterType="int" resultType="com.cc.mybatis.pojo.User">
		SELECT * FROM user WHERE age=#{age}
	</select>

	<!-- 模糊查询 -->
	<select id="findUserByName" parameterType="int" resultType="com.cc.mybatis.pojo.User">
		SELECT * FROM user WHERE name LIKE '%${value}%'
	</select>

	<!-- 插入用户 -->
	<insert id="insertUser" parameterType="com.cc.mybatis.pojo.User">
		INSERT INTO user(name,age,gender) VALUE(#{name},#{age},#{gender})
		
		<!-- 返回非自增ID,sql语句中要加入id属性。
		<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
			SELECT uuid()
		</selectKey> -->
		
		<!-- 返回自增ID,不用加入id属性
		<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
		SELECT LAST_INSERT_ID
		</selectKey> -->
	</insert>
	
	<!-- 更新 -->
	<update id="update" parameterType="com.cc.mybatis.pojo.User">
		UPDATE user SET name=#{name},age=#{age},gender=#{gender} WHERE age=#{age}
	</update>
</mapper>
	


配置JdbcTest类

package com.cc.mybatis.jdbc;

import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.cc.mybatis.pojo.User;

//最简易的查询程序
public class JdbcTest {

	public static void main(String[] args) throws Exception {

		// 得到配置文件流
		InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
		// 创建会话工厂
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		// 通过工厂的到session
		SqlSession sqlSession = sqlSessionFactory.openSession();

		// 通过session操作数据库(区别在User.xml)
		// 精准查询
		User user = sqlSession.selectOne("test.findUserByAge", 18);
		System.out.println(user);

		// 模糊查询
		List<User> list = sqlSession.selectList("test.findUserByName", "佳");
//		System.out.println(list);
		for (User u : list) {
			System.out.println(u);
		}

		// 插入用户
		User user2 = new User();
		user2.setName("嘻嘻");
		user2.setAge(18);
		user2.setGender("q");
		sqlSession.insert("test.insertUser", user2);
		sqlSession.commit();

		// 更新
		user2.setGender("qqq");
		sqlSession.update("test.update", user2);
		sqlSession.commit();

		// 释放资源
		sqlSession.close();

	}
}


GitHub:MybatisDemo
https://github.com/Jia-99/Mybatis/tree/master/MybatisDemo

Mapper代理方法开发

开发规范
  • mapper.xml的namespace要写mapper接口的地址
  • mapper.java接口定义方法要有以下规范
    • 方法名与xml中的statement的id一致
    • 方法参数与parameterType一致
    • 方法返回类型与resultType一致
部分代码

User.xml代码与上面一致
UserMapper接口定义方法

package com.cc.mybatis.jdbc;

import com.cc.mybatis.pojo.User;

public interface UserMapper {

	public User findUserByAge(int age);

}

同样需要得到配置流

		// 得到配置文件流
		InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
		// 创建会话工厂
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		

Mapper代理查询

		// 通过工厂的到session
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//创建UserMapper对象
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		//调用UserMapper方法
		User user = userMapper.findUserByAge(18);
		
		System.out.println(user);

mapper注解:Day0529-Mybatis
https://github.com/Jia-99/Mybatis/tree/master/Day0529-Mybatis

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值