Mybatis 操作数据库
pom.xml 引入
- mybatis 依赖
- mysql 依赖
mybatis1
├─src
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─dalao4
│ │ │ └─me
│ │ │ ├─dao // StuDao.java StuDao.xml
│ │ │ └─domain // Stu.java
│ │ └─resources // mybatis.xml jdbc.properties
│ └─test
│ └─java
│ └─com
│ └─dalao4
│ └─me
└─target
├─pom.xml
String config = "mybatis.xml";
InputStream in = Resources.getResourceAsStream(config);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
SqlSession sqlSession = factory.openSession();
// getMapper() 动态代理,自动创建 类 去执行 dao 接口里的方法
StuDao dao = sqlSession.getMapper(StuDao.class);
sqlSession.commit();
sqlSession.close();
Stu.java
public class Stu {
private int id;
private String name;
private String email;
@Override
public String toString() {
return "Stu{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
'}';
}
}
StuDao.java
public interface StuDao {
// @Param("xxx") 对应 sql 语句 #{xxx},#{} 是 prepareStatement,${} 是 Statement
public List<Stu> selectStu(@Param("name1") String name1, @Param("name2") String name2);
public List<Stu> selectStu2(Map<String, Object> map);
public List<Stu> selectStu3(String name);
public List<Stu> selectStu4(@Param("sid") Integer sid, @Param("namel") String namel, @Param("myid") List<Integer> stu);
public int insertStu(Stu stu);
}
StuDao.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="com.dalao4.me.dao.StuDao">
<!-- parameterType 参数类型,一般不写 -->
<select id="selectStu" parameterType="java.lang.Integer" resultType="com.dalao4.me.domain.Stu">
<!-- resultType 返回类型,一般用全限定名称,可自定义名称 -->
select * from stu where name=#{name1} or name=#{name2}
</select>
------------------------------------------------------------------
<resultMap id="stuMap" type="com.dalao4.me.domain.Stu">
<!-- 主键用 id 标签,column 是 sql 字段名,property 是 java 属性名-->
<id column="id" property="id"></id>
<!-- 其他用 result 标签,将 property 的值赋给 column-->
<result column="email" property="email"></result>
<result column="name" property="name"></result>
</resultMap>
<select id="selectStu3" resultMap="stuMap">
select id, name, email from stu where name like #{name}
</select>
-------------------------------------------------------------------
<!-- 定义 sql 语句 -->
<sql id="selectStuSql">
select id, name, email from stu
</sql>
<select id="selectStu4" resultType="com.dalao4.me.domain.Stu">
<!-- 导入 sql 语句 -->
<include refid="selectStuSql"></include>
<!-- where 1=1 无伤大雅 -->
<where>
<!-- 对应 @Param("namel") -->
<if test="namel != null and namel != ''">
name=#{namel}
</if>
<!-- 对应 @Param("sid") -->
<if test="sid > 1000">
or name like '%k%'
</if>
<!-- 对应 @Param("myid"),foreach 一般用在 in 条件,遍历 myid 集合,mm 里面的每一项 -->
or id in
<foreach collection="myid" item="mm" open="(" close=")" separator=",">
#{mm}
</foreach>
</where>
</select>
-------------------------------------------------------------------
<insert id="insertStu">
INSERT INTO `stu` (`id`, `name`, `email`) VALUES (#{id}, #{name}, #{email});
</insert>
</mapper>
mybatis.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>
<!-- 加载 jdbc 配置文件 -->
<properties resource="jdbc.properties"></properties>
<!-- 输出日志,执行 sql 可以看到过程-->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!-- 自定义别名-->
<typeAliases>
<!-- 第一种-->
<!-- <typeAlias type="com.dalao4.me.domain.Stu" alias="Stu"></typeAlias>-->
<!-- 第二种-->
<package name="com.dalao4.me.domain"/>
</typeAliases>
<environments default="development">
<!-- 环境 -->
<environment id="development">
<!-- 事务类型-->
<transactionManager type="JDBC"/>
<!-- 数据源,连接池-->
<dataSource type="POOLED">
<!-- <property name="driver" value="com.mysql.jdbc.Driver"/>-->
<!-- <property name="url" value="jdbc:mysql://127.0.0.1:3306/mydata"/>-->
<!-- <property name="username" value="root"/>-->
<!-- <property name="password" value="123456"/>-->
<!-- jdbc.properties 对应的名字 -->
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper resource="com/dalao4/me/dao/StuDao.xml"/> -->
<!-- 加载 dao 文件夹下的所有 xml -->
<package name="com/dalao4/me/dao"/>
</mappers>
</configuration>