#{}相当于对数据 加上 双引号,${}相当于直接显示数据
{}方式能够很大程度防止sql注入,${}方式无法防止Sql注入。
<select id="findById" resultType="Dept" parameterType="long">
SELECT deptno,dname,loc FROM ${deptno} WHERE deptno=#{deptno}
</select>
先看一下项目整体
图片.png
第一步:添加jar包,如果使用maven或是gradle构建项目,那么就不要了,去配置依赖关系
图片.png
第二步:创建一个数据库喽,新建user表
图片.png
create database mybatis;
use mybatis;
create table users (
id int primary key auto_increment,
name varchar(20),
age int
);
insert into users(name,age) values('剑圣',27) ;
insert into users(name,age) values('盖伦',30);
第三步:建立实体类,和数据库对应啦
图片.png
package com.domain;
public class User {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
第四步:建立接口userMapper (mybatis面向接口,编程,而接口不需要写实现,屌不屌)
图片.png
图片.png
第五步:建立userMapper.xml文件
图片.png
图片.png
<?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.mapping.userMapper">
<!--
根据id查询得到一个user对象
-->
<select id="getUser" parameterType="int" resultType="com.domain.User">
select * from users where id=#{id}
</select>
</mapper>
第六步:配置mybatis管理数据库
图片.png
图片.png
<?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">
</transactionManager>
<!--配置数据库连接信息-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"></property>
<property name="username" value="root"></property>
<property name="password" value=""></property>
</dataSource>
</environment>
</environments>
<!--注册userMapper.xml文件-->
<!--userMapper.xml位于com.mapping这个包下,所以resource写成com/mapping/userMapper.xml-->
<mappers>
<mapper resource="com/mapping/userMapper.xml"></mapper>
</mappers>
</configuration>
最后一步:跑起我们的程序
package com.test;
import com.domain.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
public class Test1 {
public static void main(String[] args){
//mybatis配置文件
String resource="resources/conf.xml";
//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
//Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
//使用类加载器加载mybatis配置文件(它也加载关联的映射文件)
InputStream is=Test1.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession工厂
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(is);
SqlSession session=sessionFactory.openSession();
/**
* 映射sql的标识字符串,
* com.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
//在命名空间“com.mapping.userMapper”中定义了一个名为“getUser”的映射语句,
//这样它就允许你使用指定的完全限定名“com.mapping.userMapper.getUser”来调用映射语句,
//格式:命名空间名(namespace)+映射语句名(id)
String statement="com.mapping.userMapper.getUser";//映射SQL的标识字符串
//执行查询返回一个唯一的user对象的SQL
User user=session.selectOne(statement,2);
System.out.print(user);
}
}
图片.png
网友评论