Mybatis学习笔记-入门

wKioL1QnehLiyvHkAAEJiFP1d4g060.jpg

User.java实体类

public class User {
	private int id;
	private String username;
	private int age;
	//...
}//数据库表对应实体类

userMapper.xml

<?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="com.mybatis.beans.userMapper">
	<!-- 
		根据id查询得到一个user对象
	 -->
	 <select id="getUser" parameterType="int" resultType="com.mybatis.beans.User">
	 	select * from users where id=#{id}
	 </select>
</mapper>

conf.xml

<?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>
<!-- 
development 开发模式
work 工作模式
 -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
				<property name="username" value="root" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="com/mybatis/beans/userMapper.xml"/>
	</mappers>
</configuration>


测试方法

import java.io.IOException;
import java.io.Reader;

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 Test {
	public static void main(String[] args) throws IOException {
		String resource = "conf.xml";
		//加载Mybatis的配置文件(它也加载关联的映射文件)
		Reader reader = Resources.getResourceAsReader(resource);
		//构建SqlSession的工厂
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
		//创建能执行映射文件中SQL语句的SqlSession 
		SqlSession session = sessionFactory.openSession();
		//映射SQL的标识字符串
		String s = "com.mybatis.beans.userMapper" + ".getUser";
		//执行查询返回一个唯一的User对象
		User user = session.selectOne(s, 3);
		//关闭session
		session.close();
		System.out.println(user);
	}
}

或者使用下面的方法测试

	public  static void test() {
		String resource = "conf.xml";
		InputStream inputStream = Test.class.getClassLoader().getResourceAsStream(resource);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session = factory.openSession();
		String s = "com.mybatis.beans.userMapper" + ".getUser";
		User user = session.selectOne(s, 3);
		session.close();
		System.out.println(user);
	}

可以写一个工具类来获取SqlSessionFactory

import java.io.InputStream;

import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.mybatis.beans.Test;

public class MybatisUtil {
	public static SqlSessionFactory getFactory() {
		String resource = "conf.xml";
		InputStream inputStream = Test.class.getClassLoader().getResourceAsStream(resource);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
		return factory;
	}
}

可以将连接数据库的配置写到db.properties中

db.properties

jdbc.username=root
jdbc.password=123456
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/mybatis

conf.xml

<?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>
<!-- 
development 开发模式
work 工作模式
 -->
	<properties resource="db.properties">
	</properties>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClass}" />
				<property name="url" value="${jdbc.jdbcUrl}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="com/mybatis/beans/userMapper.xml"/>
	</mappers>
</configuration>

添加log4j

①添加log4j-1.2.17.jar到类路径下

②添加log4j.xml到src下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
	<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" />
		</layout>
	</appender>
	<logger name="java.sql">
		<level value="debug" />
	</logger>
	<logger name="org.apache.ibatis">
		<level value="debug" />
	</logger>
	<root>
		<level value="debug" />
		<appender-ref ref="STDOUT" />
	</root>
</log4j:configuration>

当实体类的字段名和数据库表的字段名不一致时,用如下的两种方式来配置

<?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="com.atguigu.day03_mybaits.test4.orderMapper">
	<!-- ①
		根据id查询orders表得到一个order对象
		order_id  order_no  order_price 是数据库表中的字段
		id  orderNo  price 是实体类中的字段
	 -->
	<select id="getOrder" parameterType="int" resultType="Order">
		SELECT order_id id, order_no orderNo, order_price price FROM orders WHERE order_id=#{id}
	</select>
	
	<select id="getOrder2" parameterType="int" resultMap="getOrder2Map">
		SELECT * FROM orders WHERE order_id=#{id}
	</select>
	
	<!--  ② 定义一个键值对映射
		resultMap : 封装一些映射关系
			id : 专门针对主键
			result : 针对一般字段
	-->
	<resultMap type="Order" id="getOrder2Map">
		
		<id property="id" column="order_id"/>
		<result property="orderNo" column="order_no"/>
		<result property="price" column="order_price"/>
	</resultMap>
</mapper>




http://yunpan.cn/cgwRwJYafX3sv  提取码 fad7

你可能感兴趣的:(mybatis)