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