官网配置文件
http://www.mybatis.org/mybatis-3/zh/configuration.html
package com.spring.jdbc.test;
import com.mysql.jdbc.Driver;
import java.sql.*;
JDBC 连接方式
public class TestMyBatis {
public static void main(String[] args){
//链接对象
Connection connection=null;
//查询对象
PreparedStatement preparedStatement=null;
//结果集对象
ResultSet resultSet=null;
//加载驱动
try {
Class.forName("com.mysql.jdbc.Driver");
connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
String sql="select * from mybatis where id = ?";
preparedStatement= connection.prepareStatement(sql);
preparedStatement.setInt(1,1);
resultSet=preparedStatement.executeQuery();
while(resultSet.next()){
System.out.println(" id :"+resultSet.getInt(1)+" username "+resultSet.getString(2)+" password "+resultSet.getString(3));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
//获取链接
//获取statement
//获取输出结果
}
}
导入mybatis 核心包及依赖包
Hellworld 项目搭建
package com.test.mybatis.test;
import com.test.mybatis.bean.User;
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 org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class TestMybatis {
@Test
public void test1() throws IOException {
String resource="sqlMapperConfig.xml";
//获取配置文件
InputStream in= Resources.getResourceAsStream(resource);
//获取sqlSessionFactoryBuilder 对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
//创建sqlSessionFactory 对象
SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(in);
//创建一个session 对象
SqlSession sqlSession=sqlSessionFactory.openSession();
//操作数据库
User user=sqlSession.selectOne("UserMapper.selectUserById",1);
System.out.println(user.toString());
}
}
sqlMapperCpnfig.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>
<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/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
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="UserMapper">
<select id="selectUserById" parameterType="Integer" resultType="com.test.mybatis.bean.User">
select * from mybatis where id = #{id}
</select>
</mapper>
<?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="UserMapper">
<select id="selectUserById" parameterType="Integer" resultType="com.test.mybatis.bean.User">
select * from mybatis where id = #{id}
</select>
<!--#{} 占位符用于 解决 '王' 尽量使用占位符,少用字符串拼接-->
<!--${}用于字符串拼接-->
<select id="selectUserByName" parameterType="String" resultType="com.test.mybatis.bean.User">
select * from mybatis where username like "%" #{value} "%"
</select>
<insert id="insertIntoUser" parameterType="com.test.mybatis.bean.User">
insert into mybatis values(null,#{username},#{password},#{sex})
</insert>
<update id="updateUserById" parameterType="com.test.mybatis.bean.User">
update mybatis set username = #{username} where id = #{id}
</update>
<delete id="deleteUserById" parameterType="com.test.mybatis.bean.User">
delete from mybatis where id = #{id}
</delete>
</mapper>
使用Mapper 动态代理开发
package com.test.mybatis.mapper;
import com.test.mybatis.bean.User;
public interface UserMapper {
//mapper 动态代理开发原则
//1、接口方法名必须要和UserMapper.xml 方法的id 一致
//2、接口方法的参数必须要和UserMapper.xml的parameterType 一致
//3、接口方法的返回值要和UserMapper.xml 的resultType 一致
//4、mapper.xml 的namespace要与接口的全包名一致
public User selectUserById(Integer id);
}
<?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.test.mybatis.mapper.UserMapper">
<select id="selectUserById" parameterType="Integer" resultType="com.test.mybatis.bean.User">
select * from mybatis where id = #{id}
</select>
<!--#{} 占位符用于 解决 '王' 尽量使用占位符,少用字符串拼接-->
<!--${}用于字符串拼接-->
<select id="selectUserByName" parameterType="String" resultType="com.test.mybatis.bean.User">
select * from mybatis where username like "%" #{value} "%"
</select>
<insert id="insertIntoUser" parameterType="com.test.mybatis.bean.User">
insert into mybatis values(null,#{username},#{password},#{sex})
</insert>
<update id="updateUserById" parameterType="com.test.mybatis.bean.User">
update mybatis set username = #{username} where id = #{id}
</update>
<delete id="deleteUserById" parameterType="com.test.mybatis.bean.User">
delete from mybatis where id = #{id}
</delete>
</mapper>
package com.test.mybatis.test;
import com.test.mybatis.bean.User;
import com.test.mybatis.mapper.UserMapper;
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 org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class MapperTest {
@Test
public void test1() throws IOException {
String resource="sqlMapperConfig.xml";
InputStream in= Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession=sqlSessionFactory.openSession();
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
User user=userMapper.selectUserById(2);
System.out.println(user.toString());
}
}
配置的顺序需要按照下图进行配置
properties标签
<?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>
<!--使用properties 读取配置文件-->
<properties resource="db.properies"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!--使用链接池,链接数据-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
db.properties文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root
<!--定义别名-->
<typeAliases>
<typeAlias type="com.test.mybatis.bean.User" alias="User"/>
<package name="com.test.mybatis.bean"/>
</typeAliases>
资源配置
<mappers>
<!--资源的方式配置-->
<mapper resource="mapper/UserMapper.xml"/>
<!--url 方式配置-->
<mapper url="file:\\\D:\mybatis\src\mapper\UserMapper.xml"/>
<!--接口类配置 这种方式配置,需要将xml 文件和接口文件放置在一起,且文件名要相同-->
<mapper resource="com.test.mybatis.mapper.UserMapper"/>
<!--通过package 方式配置-->
<package name="com.test.mybatis.mapper"/>
</mappers>
包装类的写法
package com.test.mybatis.bean;
public class UserVo {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
<select id="selectUserByUserVo" parameterType="UserVo" resultType="User">
select * from mybatis where id = ${user.id}
</select>
resultType :无论返回的是单个对象,还是集合,使用该标签
<select id="selectUserById" parameterType="Integer" resultType="com.test.mybatis.bean.User">
select * from mybatis where id = #{id}
</select>
<!--#{} 占位符用于 解决 '王' 尽量使用占位符,少用字符串拼接-->
<!--${}用于字符串拼接-->
<select id="selectUserByName" parameterType="String" resultType="com.test.mybatis.bean.User">
resultMap:和resultType 一样,是手动映射,当数据库中的字段和类的字段不同的时候就需要使用resultMap 进行手动映射,如果不映射,表中字段和bean 字段不同的时候,不同的那些字段就无法映射到。但是进行多表查询的时候,必须要写
如下映射方式