对于mybatis的应用我们用4个文件来完成
配置准备(1、conf.xml 2、mapper.xml 3、user.class)
运行测试(1、controller.class)
当然在这之前我们需配好jar包
// https://mvnrepository.com/artifact/org.mybatis/mybatis-spring
compile group: 'org.mybatis', name: 'mybatis-spring', version: '1.1.1'
// https://mvnrepository.com/artifact/mysql/mysql-connector-java
compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.15'
- 第一步,首先我们创建一个conf.xml文件,在这里我们会写上连接数据库需要的各项相关数据
和mapper的配置告诉程序去mapper.xml寻找对应需要的sql语句
<?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>
<!-- 和spring整合后 environments配置将废除-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理-->
<transactionManager type="JDBC" />
<!-- 数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/user?serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="userMapper.xml"/>
</mappers>
</configuration>
- 第二步,我们来配置mapper.xml文件,根据上面的说法,我们会在这里存放各种sql语句,但是我当然没把增删查改全弄进来,就弄了个最基本的查询
<?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="test">
<!-- 根据id获取用户信息 -->
<select id="findUserById" parameterType="int" resultType="com.sziit.Mapper.User">
select * from users where id = #{id}
</select>
</mapper>
- 第三步,user.class文件的创建,为什么要创建user类呢?因为不创建的话,我们从数据库每获取一个数据,我们就需要创建一个变量去存放,太麻烦了,所以我们可以创建一个对应数据库的user类,把我们获取到的所有数据都放到类里去,这样我们每次都只需新建一个类的对象,就足以盛放每次从数据库获取到的多个数据
package com.sziit.Mapper;
public class User {
int id;
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "user{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
- 第4步,需要的东西都准备好了,是时候开始操作了,因为这是个SpringMvc麽,所以就把运行代码放controller里了
package com.sziit.springmvc.controller;
import com.sziit.Mapper.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
@Controller
public class zhangController {
@RequestMapping("hello")
public String hello(Model model){
String resource ="D:/IT/IdeaProjects/zhang1/src/main/resources/conf.xml";
System.out.printf(resource);
/**
* 然后把这个配置文件转成InputStream给SqlSessionFactory
*/
InputStream is = null;
try {
is = new FileInputStream(resource);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = sessionFactory.openSession();
/**
* 映射sql的标识字符串,
* com.knight.main.mapperr是mapper.xml文件中mapper标签的namespace属性的值,
* name是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
String statement = "test.findUserById";//映射sql的标识字符串
//执行查询返回结果
User user1 = session.selectOne(statement, 2);
System.out.println(user1.toString());
model.addAttribute("u1",user1);
return "hello";
}
}
5.虽然接下来运行就完事了,不过还是放几张图以供参考,
对,这个jsp和MVC的事可以看这里 https://blog.youkuaiyun.com/weixin_41571981/article/details/87971272
不过如果你不是用mvc你把controller里的代码微调一下就行,怎么调就自己想去(很简单的)。
放图吧: