idea搭建 mybatis框架

2018-05-08  本文已影响0人  Alex_1799
  #{}相当于对数据 加上 双引号,${}相当于直接显示数据

{}方式能够很大程度防止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
上一篇下一篇

猜你喜欢

热点阅读