SSM--MyBatis对数据库进行增删改查
一、先附上项目层级目录:
二、主配置文件:sqlMapConfig.xml
配置mapper时一定要搞清它和你的mapper.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>
<!-- 在集成spring 是不用 -->
<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/skh?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="usbw"/>
</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"><!-- 可能会有多个mapper配置文件 相当于给mapper配置文件另起一个名字 -->
<!-- parameterType 为sql语句中的参数类型
resultType 查询结果返回类型
-->
<select id="selectById" parameterType="int" resultType="cn.skh.bean.User">
select * from qwe where id = #{id}
</select>
<select id="selectUserByName" parameterType="String" resultType="cn.skh.bean.User">
<!-- 根据名字模糊查询用户 -->
<!-- #{} 占位符 尽量选用#{}来解决问题 占位符接收的传值会自动加上双引号 所以不需要在另外加引号-->
<!-- ${} 字符串拼接 or 1=1 王 -->
<!-- 字符串拼接写法select * from qwe where name like '%${value}%' -->
select * from qwe where name like "%"#{name}"%"
<!-- 等价于select * from qwe where name like '%王%' 不过参数 王 不需要另加引号 只需给%加即可 -->
</select>
<insert id="insertUser" parameterType="cn.skh.bean.User">
<!-- 占位符#{}中的内容要更具实体类中的变量名来写 #{id}等价于cn.skh.bean.User.id-->
insert into qwe values(#{id},#{name},#{password},#{sex})
</insert>
<update id="updateUser" parameterType="cn.skh.bean.User">
update qwe set name = #{name} where id = #{id}
</update>
<delete id="deleteUserById" parameterType="int">
delete from qwe where id = #{id}
</delete>
</mapper>
三、JavaBean以及数据库表结构
package cn.skh.bean;
/**
* 需要注意的地方 bean中的属性名称要和数据库中的属性名称相对性
* 属性和数据库中字段的名称要一样 不能这个是name 那个是username
* @author SKH
*
*/
public class User {
private int id;
private String name;
private String password;
private String sex;
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 String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + name + ", password=" + password + ", sex=" + sex + "]";
}
}
id int 11
name varchar 255
password varchar 255
sex varchar 255
四、测试类
package cn.skh.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
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 cn.skh.bean.User;
public class HelloMyBatis {
//测试入门程序 通过id查询用户
private static void test() throws IOException {
//读取配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
//建造一个建造工厂的东东
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
//通过配置文件建造工厂
SqlSessionFactory ssf = ssfb.build(in);
//通过工厂生产商品
SqlSession session = ssf.openSession();
//使用商品 即操作数据库
//参数1:要操作的sql语句 参数2:sql语句的参数
//UserMapper.selectById . 之前为UserMapper配置文件的命名空间 之后为select的id属性值
User u = session.selectOne("UserMapper.selectById",1);
System.out.println(u);
}
//模糊查询
private static void test2() throws IOException {
//读取配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
//建造一个建造工厂的东东
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
//通过配置文件建造工厂
SqlSessionFactory ssf = ssfb.build(in);
//通过工厂生产商品
SqlSession session = ssf.openSession();
//使用商品 即操作数据库
List<User> us = session.selectList("UserMapper.selectUserByName","逯");
for(User u:us) {
System.out.println(u);
}
}
private static void test3() throws IOException {
//读取配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
//建造一个建造工厂的东东
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
//通过配置文件建造工厂
SqlSessionFactory ssf = ssfb.build(in);
//通过工厂生产商品
SqlSession session = ssf.openSession();
//使用商品 即操作数据库
User u = new User();
u.setId(7);
u.setName("mlk");
u.setPassword("123456");
u.setSex("女");
session.insert("UserMapper.insertUser", u);
session.commit();//提交事务才会生效
}
private static void test4() throws IOException {
//读取配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
//建造一个建造工厂的东东
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
//通过配置文件建造工厂
SqlSessionFactory ssf = ssfb.build(in);
//通过工厂生产商品
SqlSession session = ssf.openSession();
//使用商品 即操作数据库
User u = new User();
u.setId(0);
u.setName("zxx&SKh");
session.update("UserMapper.updateUser", u);
session.commit();//提交事务才会生效
}
private static void test5() throws IOException {
//读取配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
//建造一个建造工厂的东东
SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
//通过配置文件建造工厂
SqlSessionFactory ssf = ssfb.build(in);
//通过工厂生产商品
SqlSession session = ssf.openSession();
//使用商品 即操作数据库
session.delete("UserMapper.deleteUserById", 7);
session.commit();//提交事务才会生效
}
public static void main(String[] args) throws IOException {
//test();//查询
//test2();//查询
//test3();//添加
//test4();//修改
//test5();//删除
}
}
五、最后附上一日志文件(不一定必须要放在你的项目里)
要注意此日志文件要与你的sqlConfig.xml处于同一及目录
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
还没有评论,来说两句吧...