-
数据库操作
1.书写实体类javabean
package com.shxt.test;
public class User {
private Integer user_id;
private String user_name;
private String password;
private String account;
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
@Override
public String toString() {
return "User [user_id=" + user_id + ", user_name=" + user_name + ", password=" + password + ", account="
+ account + "]";
}
}
注:数据库里面的字段名,类里面的属性名,input标签name值要一致 。
2.书写映射文件
依次进行的是操作是查询List,通过传递参数查询某条用户数据,返回数据库User表中的数据条数,插入操作。
<?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.shxt.model.User">
<select id="userList" resultType="map">
select * from user
</select>
<!-- 通过id返回数据 -->
<select id="load" resultType="com.shxt.test.User" parameterType="integer">
select * from user where user_id=#{user_id}
</select>
<select id="count" resultType="integer">
select count(*) from user
</select>
<insert id="add" parameterType="com.shxt.test.User" useGeneratedKeys="true" keyProperty="user_id">
insert into user(user_name,password,account) values(#{user_name},#{password},#{account})
</insert>
</mapper>
注:(1)resultType是sql映射文件中定义返回值类型,可以写全类名也可以写类型别名。若返回值为Map类型,resultType="map";若返回值是List类型,resultType=List中元素的类型;若返回值为POJO类,resultType=全类名。
(2)parameterType为传递的参数类型,也可以写类型别名,如parameterType="integer"。传递参数格式为:#{parameter}
(3)useGeneratedKeys="true" keyProperty="user_id" 表示后台能够接到表中传来的主键,使用的变量名为"user_id"。
3.书写测试类
package com.shxt.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
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 MybatisTest {
public static void main(String[] args) {
SqlSession sqlSession = null;
try {
//加载核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//创建sqlsession工厂 -->相当于connection
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
//获取session -->相当于执行sql语句对象
sqlSession = sqlSessionFactory.openSession();
/*List<Map<String,Object>> userList = sqlSession.selectList("com.shxt.model.User.userList");
System.out.println(userList);*/
/*Integer count = sqlSession.selectOne("com.shxt.model.User.count");
System.out.println(count);*/
/*User user = new User();
user.setAccount("admin11");
user.setPassword("123456");
user.setUser_name("Adian");
sqlSession.insert("com.shxt.model.User.add",user);
sqlSession.commit();
System.out.println(user.getUser_id());*/
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(sqlSession!=null) {
sqlSession.close();
}
}
}
}
注:在进行插入操作时,如果只执行到 sqlSession.insert("com.shxt.model.User.add",user)操作,则只是把数据插入到表里,而没有执行保存操作。需要sqlSession.commit()提交事务进行保存。